-
-
Notifications
You must be signed in to change notification settings - Fork 54
feat: add support for range types #396
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
WalkthroughThis change introduces comprehensive support for PostgreSQL range types within a Doctrine DBAL extension. It adds new abstract and concrete classes for range value objects (int, float, date, timestamp), custom DBAL types for each PostgreSQL range type, exception handling, and extensive unit and integration tests to validate serialization, deserialization, and value logic for all supported range types. Changes
Sequence Diagram(s)sequenceDiagram
participant App as Application Code
participant Doctrine as Doctrine DBAL
participant Type as Custom Range Type (e.g., Int4Range)
participant ValueObj as Range Value Object (e.g., Int4RangeValueObject)
participant DB as PostgreSQL
App->>Doctrine: Persist entity with range property
Doctrine->>Type: convertToDatabaseValue(ValueObj)
Type->>ValueObj: __toString()
Type->>DB: Store as range string
DB->>Doctrine: Retrieve range column as string
Doctrine->>Type: convertToPHPValue(range string)
Type->>ValueObj: fromString(range string)
Type->>App: Return ValueObj
Estimated code review effort🎯 4 (Complex) | ⏱️ ~45 minutes Possibly related PRs
Poem
Note ⚡️ Unit Test Generation is now available in beta!Learn more here, or try it out under "Finishing Touches" below. ✨ Finishing Touches
🧪 Generate unit tests
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
Documentation and Community
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 7
♻️ Duplicate comments (4)
src/MartinGeorgiev/Doctrine/DBAL/Types/TsRange.php (1)
19-27
: Same critical issue as NumRange: Missing abstract method implementation.This class has the same issue as
NumRange
whereBaseRangeType
doesn't implement the abstractgetName()
method fromDoctrine\DBAL\Types\Type
.src/MartinGeorgiev/Doctrine/DBAL/Types/DateRange.php (1)
19-27
: SamegetName()
omission as noted forInt8Range
.Once you fix it in
BaseRangeType
, this class will be covered automatically; otherwise add the per-class method.src/MartinGeorgiev/Doctrine/DBAL/Types/TstzRange.php (1)
19-27
: SamegetName()
omission as noted forInt8Range
.Fix centrally or locally to satisfy Doctrine’s contract.
src/MartinGeorgiev/Doctrine/DBAL/Types/Int4Range.php (1)
19-27
: SamegetName()
omission as noted forInt8Range
.Fix centrally or locally to satisfy Doctrine’s contract.
🧹 Nitpick comments (8)
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/TsRange.php (1)
16-23
: Minor: consider normalising timezone to avoid ambiguoustsrange
output.
tsrange
is “timestamp without time zone”, yetDateTimeInterface
instances may carry one.
Today you silently format using the object’s current zone, which can lead to inconsistent persistence when callers pass mixed-zoneDateTimeImmutable
s.Optional hardenings:
- return $value->format('Y-m-d H:i:s.u'); + // Persist in UTC to avoid implicit zone shifts + $utc = $value->setTimezone(new \DateTimeZone('UTC')); + return $utc->format('Y-m-d H:i:s.u');or document the expectation in PHPDoc.
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/Range.php (1)
87-87
: Consider extracting and documenting the complex regex pattern.The regex pattern is complex and would benefit from being a class constant with documentation explaining its components, or using extended regex with comments for better maintainability.
+ /** + * Regex pattern for parsing PostgreSQL range format: (lower_bracket)(lower_value),(upper_value)(upper_bracket) + * Supports quoted values for special characters. + */ + private const RANGE_PATTERN = '/^([[\(])("?[^",]*"?),("?[^",]*"?)([\]\)])$/'; + public static function fromString(string $rangeString): static { $rangeString = \trim($rangeString); if ($rangeString === self::EMPTY_RANGE_STRING) { // PostgreSQL's explicit empty state rather than mathematical tricks return new static(null, null, true, false, true); } - $pattern = '/^('.\preg_quote(self::BRACKET_LOWER_INCLUSIVE, '/').'|'.\preg_quote(self::BRACKET_LOWER_EXCLUSIVE, '/').')("?[^",]*"?),("?[^",]*"?)('.\preg_quote(self::BRACKET_UPPER_INCLUSIVE, '/').'|'.\preg_quote(self::BRACKET_UPPER_EXCLUSIVE, '/').')$/'; + $pattern = self::RANGE_PATTERN; if (!\preg_match($pattern, $rangeString, $matches)) {tests/Integration/MartinGeorgiev/Doctrine/DBAL/Types/DBALTypesTest.php (1)
186-191
: Consider enhancing range assertion to verify bound values.The current assertion only checks string representation and empty state. For thorough integration testing, consider also verifying that the actual bound values are preserved correctly through the database roundtrip, especially for numeric precision and timezone handling.
private function assertRangeEquals(RangeValueObject $rangeValueObject, mixed $actual, string $typeName): void { $this->assertInstanceOf(RangeValueObject::class, $actual, 'Failed asserting that value is a Range object for type '.$typeName); $this->assertEquals($rangeValueObject->__toString(), $actual->__toString(), 'Failed asserting that range string representations are equal for type '.$typeName); $this->assertEquals($rangeValueObject->isEmpty(), $actual->isEmpty(), 'Failed asserting that range empty states are equal for type '.$typeName); + + // For non-empty ranges, verify bounds are preserved + if (!$rangeValueObject->isEmpty() && method_exists($rangeValueObject, 'getLower') && method_exists($rangeValueObject, 'getUpper')) { + $this->assertEquals($rangeValueObject->getLower(), $actual->getLower(), 'Failed asserting that lower bounds are equal for type '.$typeName); + $this->assertEquals($rangeValueObject->getUpper(), $actual->getUpper(), 'Failed asserting that upper bounds are equal for type '.$typeName); + } }tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/TsRangeTest.php (1)
52-58
: Consider adding mixed type parameter and non-string test cases.Based on the project pattern for database-to-PHP conversion tests, the
can_transform_from_sql_value
method should usemixed
type for the$sqlValue
parameter and include non-string test cases in the data provider, following the pattern used in classes like InetTest, CidrTest, and MacaddrTest.- public function can_transform_from_sql_value(string $sqlValue, TsRangeValueObject $tsRangeValueObject): void + public function can_transform_from_sql_value(mixed $sqlValue, TsRangeValueObject $tsRangeValueObject): voidConsider adding non-string test cases to
providesValidSqlValues()
to ensure the type properly handles unexpected input types.tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/DateRangeTest.php (1)
52-58
: Consider adding mixed type parameter and non-string test cases.Similar to other database-to-PHP conversion tests in this project, this method should use
mixed
type for the$sqlValue
parameter and include non-string test cases in the data provider.- public function can_transform_from_sql_value(string $sqlValue, DateRangeValueObject $dateRangeValueObject): void + public function can_transform_from_sql_value(mixed $sqlValue, DateRangeValueObject $dateRangeValueObject): voidtests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/NumRangeTest.php (1)
52-58
: Consider adding mixed type parameter and non-string test cases.Following the project pattern for database-to-PHP conversion tests, consider using
mixed
type for the$sqlValue
parameter and adding non-string test cases to the data provider.- public function can_transform_from_sql_value(string $sqlValue, NumericRange $numericRange): void + public function can_transform_from_sql_value(mixed $sqlValue, NumericRange $numericRange): voidtests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/Int4RangeTest.php (2)
108-134
: Add more test cases to match the comprehensive PHP values coverage.The
providesValidSqlValues
data provider only covers 3 scenarios whileprovidesValidPHPValues
covers 6 scenarios including inclusive/exclusive bounds, infinite bounds, and max int4 values. Consider adding the missing test cases for consistency.public static function providesValidSqlValues(): \Generator { yield 'simple range' => [ '[1,1000)', new Int4RangeValueObject(1, 1000), ]; + yield 'inclusive range' => [ + '[1,10]', + new Int4RangeValueObject(1, 10, true, true), + ]; + yield 'exclusive range' => [ + '(1,10)', + new Int4RangeValueObject(1, 10, false, false), + ]; + yield 'lower infinite' => [ + '[,10)', + new Int4RangeValueObject(null, 10), + ]; + yield 'upper infinite' => [ + '[1,)', + new Int4RangeValueObject(1, null), + ]; yield 'empty range' => [ 'empty', Int4RangeValueObject::empty(), ]; + yield 'max int4 values' => [ + '[-2147483648,2147483647)', + new Int4RangeValueObject(-2147483648, 2147483647), + ]; }
68-74
: Missing test for empty string conversion from SQL value.The test class has a dedicated test for empty string conversion (
can_transform_empty_string_from_sql_value
) but this scenario is missing from the data provider testing. According to the retrieved learnings, database-to-PHP conversion tests should include non-string test cases.Consider adding an empty string test case to the data provider or ensuring the existing empty string test covers all edge cases.
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (31)
src/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeType.php
(1 hunks)src/MartinGeorgiev/Doctrine/DBAL/Types/DateRange.php
(1 hunks)src/MartinGeorgiev/Doctrine/DBAL/Types/Exceptions/InvalidRangeForDatabaseException.php
(1 hunks)src/MartinGeorgiev/Doctrine/DBAL/Types/Int4Range.php
(1 hunks)src/MartinGeorgiev/Doctrine/DBAL/Types/Int8Range.php
(1 hunks)src/MartinGeorgiev/Doctrine/DBAL/Types/NumRange.php
(1 hunks)src/MartinGeorgiev/Doctrine/DBAL/Types/TsRange.php
(1 hunks)src/MartinGeorgiev/Doctrine/DBAL/Types/TstzRange.php
(1 hunks)src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseIntegerRange.php
(1 hunks)src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseTimestampRange.php
(1 hunks)src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/DateRange.php
(1 hunks)src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/Int4Range.php
(1 hunks)src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/Int8Range.php
(1 hunks)src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/NumericRange.php
(1 hunks)src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/Range.php
(1 hunks)src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/TsRange.php
(1 hunks)src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/TstzRange.php
(1 hunks)tests/Integration/MartinGeorgiev/Doctrine/DBAL/Types/DBALTypesTest.php
(4 hunks)tests/Integration/MartinGeorgiev/TestCase.php
(2 hunks)tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/DateRangeTest.php
(1 hunks)tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/Int4RangeTest.php
(1 hunks)tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/Int8RangeTest.php
(1 hunks)tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/NumRangeTest.php
(1 hunks)tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/TsRangeTest.php
(1 hunks)tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/TstzRangeTest.php
(1 hunks)tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/DateRangeTest.php
(1 hunks)tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/Int4RangeTest.php
(1 hunks)tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/Int8RangeTest.php
(1 hunks)tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/NumericRangeTest.php
(1 hunks)tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/TsRangeTest.php
(1 hunks)tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/TstzRangeTest.php
(1 hunks)
🧰 Additional context used
🧠 Learnings (32)
📓 Common learnings
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#263
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/Numrange.php:19-21
Timestamp: 2025-03-11T12:32:10.726Z
Learning: In the postgresql-for-doctrine repository, PostgreSQL range functions have distinct implementations for different data types. The `Numrange` function works with numeric/decimal values and is tested using the `ContainsDecimals` fixture with properties typed as `float`. In contrast, the `Int4range` function works with 32-bit integers and is tested using the `ContainsIntegers` fixture with properties typed as `int`. While the PHP implementations share a similar structure (extending `BaseFunction`), they are semantically different as they handle different PostgreSQL data types.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#0
File: :0-0
Timestamp: 2025-03-26T02:46:12.804Z
Learning: The PR "preserve the type of floats and integers when transforming back and forth between PostgreSQL and PHP" improves type handling by ensuring that integers remain integers, floats remain floats, numeric strings stay as strings, and booleans are properly converted through the transformation process.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#352
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpInstrTest.php:1-67
Timestamp: 2025-04-20T11:24:18.300Z
Learning: This PostgreSQL-for-Doctrine project is a translation layer only, focusing on correctly converting Doctrine DQL to PostgreSQL SQL syntax. It ensures arguments are passed in the expected format but does not test or handle PostgreSQL's actual function behavior or data handling. Test cases should focus on DQL-to-SQL translation and argument validation, not on PostgreSQL-specific behaviors.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#340
File: tests/MartinGeorgiev/Doctrine/DBAL/Types/InetArrayTest.php:145-145
Timestamp: 2025-04-11T11:23:44.192Z
Learning: In the PostgreSQL for Doctrine test cases, methods that test database-to-PHP conversions should use `mixed` type for parameter and include non-string test cases in their data providers, following the pattern in classes like InetTest, CidrTest, and MacaddrTest.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#357
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpMatchTest.php:28-62
Timestamp: 2025-04-22T00:03:37.733Z
Learning: This project focuses on providing Doctrine ORM interfaces to PostgreSQL functions. Tests should validate correct DQL-to-SQL translation rather than PostgreSQL functionality itself. Test cases should focus on parameter passing and SQL generation, not on testing specific PostgreSQL regex pattern behaviors.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#350
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/BaseVariadicFunction.php:78-88
Timestamp: 2025-04-18T10:33:52.412Z
Learning: In SQL generation code for the postgresql-for-doctrine library, it's better to fail explicitly with clear errors than to use fallback behavior that makes assumptions about node types, as this could lead to functional bugs or security issues.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#0
File: :0-0
Timestamp: 2025-03-11T17:02:51.971Z
Learning: The PostgreSQL-for-doctrine library implements the JSON array element existence check using the `RIGHT_EXISTS_ON_LEFT` DQL function, which maps to PostgreSQL's `?` operator. This is used for checking if a specific value exists in a JSONB array column.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#277
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonValueTest.php:19-35
Timestamp: 2025-03-13T15:00:16.619Z
Learning: The JsonValue implementation in postgres-for-doctrine has documented limitations: it does not support RETURNING type, DEFAULT clause, ON ERROR clause, ON EMPTY clause, and other advanced PostgreSQL JSON_VALUE features due to DQL limitations.
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/Int8Range.php (3)
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#263
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/Numrange.php:19-21
Timestamp: 2025-03-11T12:32:10.726Z
Learning: In the postgresql-for-doctrine repository, PostgreSQL range functions have distinct implementations for different data types. The `Numrange` function works with numeric/decimal values and is tested using the `ContainsDecimals` fixture with properties typed as `float`. In contrast, the `Int4range` function works with 32-bit integers and is tested using the `ContainsIntegers` fixture with properties typed as `int`. While the PHP implementations share a similar structure (extending `BaseFunction`), they are semantically different as they handle different PostgreSQL data types.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#0
File: :0-0
Timestamp: 2025-03-26T02:46:12.804Z
Learning: The PR "preserve the type of floats and integers when transforming back and forth between PostgreSQL and PHP" improves type handling by ensuring that integers remain integers, floats remain floats, numeric strings stay as strings, and booleans are properly converted through the transformation process.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#340
File: tests/MartinGeorgiev/Doctrine/DBAL/Types/InetArrayTest.php:145-145
Timestamp: 2025-04-11T11:23:44.192Z
Learning: In the PostgreSQL for Doctrine test cases, methods that test database-to-PHP conversions should use `mixed` type for parameter and include non-string test cases in their data providers, following the pattern in classes like InetTest, CidrTest, and MacaddrTest.
tests/Integration/MartinGeorgiev/TestCase.php (10)
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#263
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/Numrange.php:19-21
Timestamp: 2025-03-11T12:32:10.726Z
Learning: In the postgresql-for-doctrine repository, PostgreSQL range functions have distinct implementations for different data types. The `Numrange` function works with numeric/decimal values and is tested using the `ContainsDecimals` fixture with properties typed as `float`. In contrast, the `Int4range` function works with 32-bit integers and is tested using the `ContainsIntegers` fixture with properties typed as `int`. While the PHP implementations share a similar structure (extending `BaseFunction`), they are semantically different as they handle different PostgreSQL data types.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#340
File: tests/MartinGeorgiev/Doctrine/DBAL/Types/InetArrayTest.php:145-145
Timestamp: 2025-04-11T11:23:44.192Z
Learning: In the PostgreSQL for Doctrine test cases, methods that test database-to-PHP conversions should use `mixed` type for parameter and include non-string test cases in their data providers, following the pattern in classes like InetTest, CidrTest, and MacaddrTest.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#383
File: tests/Unit/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RadiansTest.php:1-9
Timestamp: 2025-05-23T11:11:57.951Z
Learning: Tests in the `Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase directly, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), not PHPUnit's TestCase, and therefore don't need an explicit import statement.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#357
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpMatchTest.php:28-62
Timestamp: 2025-04-22T00:03:37.733Z
Learning: This project focuses on providing Doctrine ORM interfaces to PostgreSQL functions. Tests should validate correct DQL-to-SQL translation rather than PostgreSQL functionality itself. Test cases should focus on parameter passing and SQL generation, not on testing specific PostgreSQL regex pattern behaviors.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#352
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpInstrTest.php:1-67
Timestamp: 2025-04-20T11:24:18.300Z
Learning: This PostgreSQL-for-Doctrine project is a translation layer only, focusing on correctly converting Doctrine DQL to PostgreSQL SQL syntax. It ensures arguments are passed in the expected format but does not test or handle PostgreSQL's actual function behavior or data handling. Test cases should focus on DQL-to-SQL translation and argument validation, not on PostgreSQL-specific behaviors.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#0
File: :0-0
Timestamp: 2025-03-26T02:46:12.804Z
Learning: The PR "preserve the type of floats and integers when transforming back and forth between PostgreSQL and PHP" improves type handling by ensuring that integers remain integers, floats remain floats, numeric strings stay as strings, and booleans are properly converted through the transformation process.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#350
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/BaseVariadicFunction.php:78-88
Timestamp: 2025-04-18T10:33:52.412Z
Learning: In SQL generation code for the postgresql-for-doctrine library, it's better to fail explicitly with clear errors than to use fallback behavior that makes assumptions about node types, as this could lead to functional bugs or security issues.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#0
File: :0-0
Timestamp: 2025-03-11T17:02:51.971Z
Learning: The PostgreSQL-for-doctrine library implements the JSON array element existence check using the `RIGHT_EXISTS_ON_LEFT` DQL function, which maps to PostgreSQL's `?` operator. This is used for checking if a specific value exists in a JSONB array column.
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/TsRange.php (6)
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#263
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/Numrange.php:19-21
Timestamp: 2025-03-11T12:32:10.726Z
Learning: In the postgresql-for-doctrine repository, PostgreSQL range functions have distinct implementations for different data types. The `Numrange` function works with numeric/decimal values and is tested using the `ContainsDecimals` fixture with properties typed as `float`. In contrast, the `Int4range` function works with 32-bit integers and is tested using the `ContainsIntegers` fixture with properties typed as `int`. While the PHP implementations share a similar structure (extending `BaseFunction`), they are semantically different as they handle different PostgreSQL data types.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#340
File: tests/MartinGeorgiev/Doctrine/DBAL/Types/InetArrayTest.php:145-145
Timestamp: 2025-04-11T11:23:44.192Z
Learning: In the PostgreSQL for Doctrine test cases, methods that test database-to-PHP conversions should use `mixed` type for parameter and include non-string test cases in their data providers, following the pattern in classes like InetTest, CidrTest, and MacaddrTest.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#0
File: :0-0
Timestamp: 2025-03-26T02:46:12.804Z
Learning: The PR "preserve the type of floats and integers when transforming back and forth between PostgreSQL and PHP" improves type handling by ensuring that integers remain integers, floats remain floats, numeric strings stay as strings, and booleans are properly converted through the transformation process.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), not PHPUnit's TestCase, and therefore don't need an explicit import statement.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#383
File: tests/Unit/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RadiansTest.php:1-9
Timestamp: 2025-05-23T11:11:57.951Z
Learning: Tests in the `Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase directly, and therefore don't need an explicit import.
src/MartinGeorgiev/Doctrine/DBAL/Types/Exceptions/InvalidRangeForDatabaseException.php (2)
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#263
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/Numrange.php:19-21
Timestamp: 2025-03-11T12:32:10.726Z
Learning: In the postgresql-for-doctrine repository, PostgreSQL range functions have distinct implementations for different data types. The `Numrange` function works with numeric/decimal values and is tested using the `ContainsDecimals` fixture with properties typed as `float`. In contrast, the `Int4range` function works with 32-bit integers and is tested using the `ContainsIntegers` fixture with properties typed as `int`. While the PHP implementations share a similar structure (extending `BaseFunction`), they are semantically different as they handle different PostgreSQL data types.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#340
File: tests/MartinGeorgiev/Doctrine/DBAL/Types/InetArrayTest.php:145-145
Timestamp: 2025-04-11T11:23:44.192Z
Learning: In the PostgreSQL for Doctrine test cases, methods that test database-to-PHP conversions should use `mixed` type for parameter and include non-string test cases in their data providers, following the pattern in classes like InetTest, CidrTest, and MacaddrTest.
src/MartinGeorgiev/Doctrine/DBAL/Types/NumRange.php (4)
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#263
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/Numrange.php:19-21
Timestamp: 2025-03-11T12:32:10.726Z
Learning: In the postgresql-for-doctrine repository, PostgreSQL range functions have distinct implementations for different data types. The `Numrange` function works with numeric/decimal values and is tested using the `ContainsDecimals` fixture with properties typed as `float`. In contrast, the `Int4range` function works with 32-bit integers and is tested using the `ContainsIntegers` fixture with properties typed as `int`. While the PHP implementations share a similar structure (extending `BaseFunction`), they are semantically different as they handle different PostgreSQL data types.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#0
File: :0-0
Timestamp: 2025-03-26T02:46:12.804Z
Learning: The PR "preserve the type of floats and integers when transforming back and forth between PostgreSQL and PHP" improves type handling by ensuring that integers remain integers, floats remain floats, numeric strings stay as strings, and booleans are properly converted through the transformation process.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#340
File: tests/MartinGeorgiev/Doctrine/DBAL/Types/InetArrayTest.php:145-145
Timestamp: 2025-04-11T11:23:44.192Z
Learning: In the PostgreSQL for Doctrine test cases, methods that test database-to-PHP conversions should use `mixed` type for parameter and include non-string test cases in their data providers, following the pattern in classes like InetTest, CidrTest, and MacaddrTest.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#357
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpMatchTest.php:28-62
Timestamp: 2025-04-22T00:03:37.733Z
Learning: This project focuses on providing Doctrine ORM interfaces to PostgreSQL functions. Tests should validate correct DQL-to-SQL translation rather than PostgreSQL functionality itself. Test cases should focus on parameter passing and SQL generation, not on testing specific PostgreSQL regex pattern behaviors.
src/MartinGeorgiev/Doctrine/DBAL/Types/TsRange.php (8)
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#263
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/Numrange.php:19-21
Timestamp: 2025-03-11T12:32:10.726Z
Learning: In the postgresql-for-doctrine repository, PostgreSQL range functions have distinct implementations for different data types. The `Numrange` function works with numeric/decimal values and is tested using the `ContainsDecimals` fixture with properties typed as `float`. In contrast, the `Int4range` function works with 32-bit integers and is tested using the `ContainsIntegers` fixture with properties typed as `int`. While the PHP implementations share a similar structure (extending `BaseFunction`), they are semantically different as they handle different PostgreSQL data types.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#340
File: tests/MartinGeorgiev/Doctrine/DBAL/Types/InetArrayTest.php:145-145
Timestamp: 2025-04-11T11:23:44.192Z
Learning: In the PostgreSQL for Doctrine test cases, methods that test database-to-PHP conversions should use `mixed` type for parameter and include non-string test cases in their data providers, following the pattern in classes like InetTest, CidrTest, and MacaddrTest.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#0
File: :0-0
Timestamp: 2025-03-26T02:46:12.804Z
Learning: The PR "preserve the type of floats and integers when transforming back and forth between PostgreSQL and PHP" improves type handling by ensuring that integers remain integers, floats remain floats, numeric strings stay as strings, and booleans are properly converted through the transformation process.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), not PHPUnit's TestCase, and therefore don't need an explicit import statement.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#383
File: tests/Unit/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RadiansTest.php:1-9
Timestamp: 2025-05-23T11:11:57.951Z
Learning: Tests in the `Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase directly, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#352
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpInstrTest.php:1-67
Timestamp: 2025-04-20T11:24:18.300Z
Learning: This PostgreSQL-for-Doctrine project is a translation layer only, focusing on correctly converting Doctrine DQL to PostgreSQL SQL syntax. It ensures arguments are passed in the expected format but does not test or handle PostgreSQL's actual function behavior or data handling. Test cases should focus on DQL-to-SQL translation and argument validation, not on PostgreSQL-specific behaviors.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#357
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpMatchTest.php:28-62
Timestamp: 2025-04-22T00:03:37.733Z
Learning: This project focuses on providing Doctrine ORM interfaces to PostgreSQL functions. Tests should validate correct DQL-to-SQL translation rather than PostgreSQL functionality itself. Test cases should focus on parameter passing and SQL generation, not on testing specific PostgreSQL regex pattern behaviors.
src/MartinGeorgiev/Doctrine/DBAL/Types/DateRange.php (4)
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#263
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/Numrange.php:19-21
Timestamp: 2025-03-11T12:32:10.726Z
Learning: In the postgresql-for-doctrine repository, PostgreSQL range functions have distinct implementations for different data types. The `Numrange` function works with numeric/decimal values and is tested using the `ContainsDecimals` fixture with properties typed as `float`. In contrast, the `Int4range` function works with 32-bit integers and is tested using the `ContainsIntegers` fixture with properties typed as `int`. While the PHP implementations share a similar structure (extending `BaseFunction`), they are semantically different as they handle different PostgreSQL data types.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#340
File: tests/MartinGeorgiev/Doctrine/DBAL/Types/InetArrayTest.php:145-145
Timestamp: 2025-04-11T11:23:44.192Z
Learning: In the PostgreSQL for Doctrine test cases, methods that test database-to-PHP conversions should use `mixed` type for parameter and include non-string test cases in their data providers, following the pattern in classes like InetTest, CidrTest, and MacaddrTest.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#352
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpInstrTest.php:1-67
Timestamp: 2025-04-20T11:24:18.300Z
Learning: This PostgreSQL-for-Doctrine project is a translation layer only, focusing on correctly converting Doctrine DQL to PostgreSQL SQL syntax. It ensures arguments are passed in the expected format but does not test or handle PostgreSQL's actual function behavior or data handling. Test cases should focus on DQL-to-SQL translation and argument validation, not on PostgreSQL-specific behaviors.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#357
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpMatchTest.php:28-62
Timestamp: 2025-04-22T00:03:37.733Z
Learning: This project focuses on providing Doctrine ORM interfaces to PostgreSQL functions. Tests should validate correct DQL-to-SQL translation rather than PostgreSQL functionality itself. Test cases should focus on parameter passing and SQL generation, not on testing specific PostgreSQL regex pattern behaviors.
src/MartinGeorgiev/Doctrine/DBAL/Types/Int8Range.php (5)
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#263
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/Numrange.php:19-21
Timestamp: 2025-03-11T12:32:10.726Z
Learning: In the postgresql-for-doctrine repository, PostgreSQL range functions have distinct implementations for different data types. The `Numrange` function works with numeric/decimal values and is tested using the `ContainsDecimals` fixture with properties typed as `float`. In contrast, the `Int4range` function works with 32-bit integers and is tested using the `ContainsIntegers` fixture with properties typed as `int`. While the PHP implementations share a similar structure (extending `BaseFunction`), they are semantically different as they handle different PostgreSQL data types.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#0
File: :0-0
Timestamp: 2025-03-26T02:46:12.804Z
Learning: The PR "preserve the type of floats and integers when transforming back and forth between PostgreSQL and PHP" improves type handling by ensuring that integers remain integers, floats remain floats, numeric strings stay as strings, and booleans are properly converted through the transformation process.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#340
File: tests/MartinGeorgiev/Doctrine/DBAL/Types/InetArrayTest.php:145-145
Timestamp: 2025-04-11T11:23:44.192Z
Learning: In the PostgreSQL for Doctrine test cases, methods that test database-to-PHP conversions should use `mixed` type for parameter and include non-string test cases in their data providers, following the pattern in classes like InetTest, CidrTest, and MacaddrTest.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#357
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpMatchTest.php:28-62
Timestamp: 2025-04-22T00:03:37.733Z
Learning: This project focuses on providing Doctrine ORM interfaces to PostgreSQL functions. Tests should validate correct DQL-to-SQL translation rather than PostgreSQL functionality itself. Test cases should focus on parameter passing and SQL generation, not on testing specific PostgreSQL regex pattern behaviors.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#352
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpInstrTest.php:1-67
Timestamp: 2025-04-20T11:24:18.300Z
Learning: This PostgreSQL-for-Doctrine project is a translation layer only, focusing on correctly converting Doctrine DQL to PostgreSQL SQL syntax. It ensures arguments are passed in the expected format but does not test or handle PostgreSQL's actual function behavior or data handling. Test cases should focus on DQL-to-SQL translation and argument validation, not on PostgreSQL-specific behaviors.
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/TstzRange.php (6)
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#263
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/Numrange.php:19-21
Timestamp: 2025-03-11T12:32:10.726Z
Learning: In the postgresql-for-doctrine repository, PostgreSQL range functions have distinct implementations for different data types. The `Numrange` function works with numeric/decimal values and is tested using the `ContainsDecimals` fixture with properties typed as `float`. In contrast, the `Int4range` function works with 32-bit integers and is tested using the `ContainsIntegers` fixture with properties typed as `int`. While the PHP implementations share a similar structure (extending `BaseFunction`), they are semantically different as they handle different PostgreSQL data types.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#340
File: tests/MartinGeorgiev/Doctrine/DBAL/Types/InetArrayTest.php:145-145
Timestamp: 2025-04-11T11:23:44.192Z
Learning: In the PostgreSQL for Doctrine test cases, methods that test database-to-PHP conversions should use `mixed` type for parameter and include non-string test cases in their data providers, following the pattern in classes like InetTest, CidrTest, and MacaddrTest.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), not PHPUnit's TestCase, and therefore don't need an explicit import statement.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#383
File: tests/Unit/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RadiansTest.php:1-9
Timestamp: 2025-05-23T11:11:57.951Z
Learning: Tests in the `Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase directly, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#0
File: :0-0
Timestamp: 2025-03-26T02:46:12.804Z
Learning: The PR "preserve the type of floats and integers when transforming back and forth between PostgreSQL and PHP" improves type handling by ensuring that integers remain integers, floats remain floats, numeric strings stay as strings, and booleans are properly converted through the transformation process.
src/MartinGeorgiev/Doctrine/DBAL/Types/Int4Range.php (5)
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#263
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/Numrange.php:19-21
Timestamp: 2025-03-11T12:32:10.726Z
Learning: In the postgresql-for-doctrine repository, PostgreSQL range functions have distinct implementations for different data types. The `Numrange` function works with numeric/decimal values and is tested using the `ContainsDecimals` fixture with properties typed as `float`. In contrast, the `Int4range` function works with 32-bit integers and is tested using the `ContainsIntegers` fixture with properties typed as `int`. While the PHP implementations share a similar structure (extending `BaseFunction`), they are semantically different as they handle different PostgreSQL data types.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#0
File: :0-0
Timestamp: 2025-03-26T02:46:12.804Z
Learning: The PR "preserve the type of floats and integers when transforming back and forth between PostgreSQL and PHP" improves type handling by ensuring that integers remain integers, floats remain floats, numeric strings stay as strings, and booleans are properly converted through the transformation process.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#340
File: tests/MartinGeorgiev/Doctrine/DBAL/Types/InetArrayTest.php:145-145
Timestamp: 2025-04-11T11:23:44.192Z
Learning: In the PostgreSQL for Doctrine test cases, methods that test database-to-PHP conversions should use `mixed` type for parameter and include non-string test cases in their data providers, following the pattern in classes like InetTest, CidrTest, and MacaddrTest.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#352
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpInstrTest.php:1-67
Timestamp: 2025-04-20T11:24:18.300Z
Learning: This PostgreSQL-for-Doctrine project is a translation layer only, focusing on correctly converting Doctrine DQL to PostgreSQL SQL syntax. It ensures arguments are passed in the expected format but does not test or handle PostgreSQL's actual function behavior or data handling. Test cases should focus on DQL-to-SQL translation and argument validation, not on PostgreSQL-specific behaviors.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#357
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpMatchTest.php:28-62
Timestamp: 2025-04-22T00:03:37.733Z
Learning: This project focuses on providing Doctrine ORM interfaces to PostgreSQL functions. Tests should validate correct DQL-to-SQL translation rather than PostgreSQL functionality itself. Test cases should focus on parameter passing and SQL generation, not on testing specific PostgreSQL regex pattern behaviors.
src/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeType.php (6)
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#263
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/Numrange.php:19-21
Timestamp: 2025-03-11T12:32:10.726Z
Learning: In the postgresql-for-doctrine repository, PostgreSQL range functions have distinct implementations for different data types. The `Numrange` function works with numeric/decimal values and is tested using the `ContainsDecimals` fixture with properties typed as `float`. In contrast, the `Int4range` function works with 32-bit integers and is tested using the `ContainsIntegers` fixture with properties typed as `int`. While the PHP implementations share a similar structure (extending `BaseFunction`), they are semantically different as they handle different PostgreSQL data types.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#340
File: tests/MartinGeorgiev/Doctrine/DBAL/Types/InetArrayTest.php:145-145
Timestamp: 2025-04-11T11:23:44.192Z
Learning: In the PostgreSQL for Doctrine test cases, methods that test database-to-PHP conversions should use `mixed` type for parameter and include non-string test cases in their data providers, following the pattern in classes like InetTest, CidrTest, and MacaddrTest.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#0
File: :0-0
Timestamp: 2025-03-26T02:46:12.804Z
Learning: The PR "preserve the type of floats and integers when transforming back and forth between PostgreSQL and PHP" improves type handling by ensuring that integers remain integers, floats remain floats, numeric strings stay as strings, and booleans are properly converted through the transformation process.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#350
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/BaseVariadicFunction.php:78-88
Timestamp: 2025-04-18T10:33:52.412Z
Learning: In SQL generation code for the postgresql-for-doctrine library, it's better to fail explicitly with clear errors than to use fallback behavior that makes assumptions about node types, as this could lead to functional bugs or security issues.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#352
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpInstrTest.php:1-67
Timestamp: 2025-04-20T11:24:18.300Z
Learning: This PostgreSQL-for-Doctrine project is a translation layer only, focusing on correctly converting Doctrine DQL to PostgreSQL SQL syntax. It ensures arguments are passed in the expected format but does not test or handle PostgreSQL's actual function behavior or data handling. Test cases should focus on DQL-to-SQL translation and argument validation, not on PostgreSQL-specific behaviors.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#357
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpMatchTest.php:28-62
Timestamp: 2025-04-22T00:03:37.733Z
Learning: This project focuses on providing Doctrine ORM interfaces to PostgreSQL functions. Tests should validate correct DQL-to-SQL translation rather than PostgreSQL functionality itself. Test cases should focus on parameter passing and SQL generation, not on testing specific PostgreSQL regex pattern behaviors.
src/MartinGeorgiev/Doctrine/DBAL/Types/TstzRange.php (8)
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#263
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/Numrange.php:19-21
Timestamp: 2025-03-11T12:32:10.726Z
Learning: In the postgresql-for-doctrine repository, PostgreSQL range functions have distinct implementations for different data types. The `Numrange` function works with numeric/decimal values and is tested using the `ContainsDecimals` fixture with properties typed as `float`. In contrast, the `Int4range` function works with 32-bit integers and is tested using the `ContainsIntegers` fixture with properties typed as `int`. While the PHP implementations share a similar structure (extending `BaseFunction`), they are semantically different as they handle different PostgreSQL data types.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#340
File: tests/MartinGeorgiev/Doctrine/DBAL/Types/InetArrayTest.php:145-145
Timestamp: 2025-04-11T11:23:44.192Z
Learning: In the PostgreSQL for Doctrine test cases, methods that test database-to-PHP conversions should use `mixed` type for parameter and include non-string test cases in their data providers, following the pattern in classes like InetTest, CidrTest, and MacaddrTest.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), not PHPUnit's TestCase, and therefore don't need an explicit import statement.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#383
File: tests/Unit/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RadiansTest.php:1-9
Timestamp: 2025-05-23T11:11:57.951Z
Learning: Tests in the `Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase directly, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#0
File: :0-0
Timestamp: 2025-03-26T02:46:12.804Z
Learning: The PR "preserve the type of floats and integers when transforming back and forth between PostgreSQL and PHP" improves type handling by ensuring that integers remain integers, floats remain floats, numeric strings stay as strings, and booleans are properly converted through the transformation process.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#357
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpMatchTest.php:28-62
Timestamp: 2025-04-22T00:03:37.733Z
Learning: This project focuses on providing Doctrine ORM interfaces to PostgreSQL functions. Tests should validate correct DQL-to-SQL translation rather than PostgreSQL functionality itself. Test cases should focus on parameter passing and SQL generation, not on testing specific PostgreSQL regex pattern behaviors.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#352
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpInstrTest.php:1-67
Timestamp: 2025-04-20T11:24:18.300Z
Learning: This PostgreSQL-for-Doctrine project is a translation layer only, focusing on correctly converting Doctrine DQL to PostgreSQL SQL syntax. It ensures arguments are passed in the expected format but does not test or handle PostgreSQL's actual function behavior or data handling. Test cases should focus on DQL-to-SQL translation and argument validation, not on PostgreSQL-specific behaviors.
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/Int4Range.php (3)
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#263
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/Numrange.php:19-21
Timestamp: 2025-03-11T12:32:10.726Z
Learning: In the postgresql-for-doctrine repository, PostgreSQL range functions have distinct implementations for different data types. The `Numrange` function works with numeric/decimal values and is tested using the `ContainsDecimals` fixture with properties typed as `float`. In contrast, the `Int4range` function works with 32-bit integers and is tested using the `ContainsIntegers` fixture with properties typed as `int`. While the PHP implementations share a similar structure (extending `BaseFunction`), they are semantically different as they handle different PostgreSQL data types.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#0
File: :0-0
Timestamp: 2025-03-26T02:46:12.804Z
Learning: The PR "preserve the type of floats and integers when transforming back and forth between PostgreSQL and PHP" improves type handling by ensuring that integers remain integers, floats remain floats, numeric strings stay as strings, and booleans are properly converted through the transformation process.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#340
File: tests/MartinGeorgiev/Doctrine/DBAL/Types/InetArrayTest.php:145-145
Timestamp: 2025-04-11T11:23:44.192Z
Learning: In the PostgreSQL for Doctrine test cases, methods that test database-to-PHP conversions should use `mixed` type for parameter and include non-string test cases in their data providers, following the pattern in classes like InetTest, CidrTest, and MacaddrTest.
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseIntegerRange.php (3)
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#263
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/Numrange.php:19-21
Timestamp: 2025-03-11T12:32:10.726Z
Learning: In the postgresql-for-doctrine repository, PostgreSQL range functions have distinct implementations for different data types. The `Numrange` function works with numeric/decimal values and is tested using the `ContainsDecimals` fixture with properties typed as `float`. In contrast, the `Int4range` function works with 32-bit integers and is tested using the `ContainsIntegers` fixture with properties typed as `int`. While the PHP implementations share a similar structure (extending `BaseFunction`), they are semantically different as they handle different PostgreSQL data types.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#0
File: :0-0
Timestamp: 2025-03-26T02:46:12.804Z
Learning: The PR "preserve the type of floats and integers when transforming back and forth between PostgreSQL and PHP" improves type handling by ensuring that integers remain integers, floats remain floats, numeric strings stay as strings, and booleans are properly converted through the transformation process.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#340
File: tests/MartinGeorgiev/Doctrine/DBAL/Types/InetArrayTest.php:145-145
Timestamp: 2025-04-11T11:23:44.192Z
Learning: In the PostgreSQL for Doctrine test cases, methods that test database-to-PHP conversions should use `mixed` type for parameter and include non-string test cases in their data providers, following the pattern in classes like InetTest, CidrTest, and MacaddrTest.
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/Int8RangeTest.php (7)
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#263
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/Numrange.php:19-21
Timestamp: 2025-03-11T12:32:10.726Z
Learning: In the postgresql-for-doctrine repository, PostgreSQL range functions have distinct implementations for different data types. The `Numrange` function works with numeric/decimal values and is tested using the `ContainsDecimals` fixture with properties typed as `float`. In contrast, the `Int4range` function works with 32-bit integers and is tested using the `ContainsIntegers` fixture with properties typed as `int`. While the PHP implementations share a similar structure (extending `BaseFunction`), they are semantically different as they handle different PostgreSQL data types.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#340
File: tests/MartinGeorgiev/Doctrine/DBAL/Types/InetArrayTest.php:145-145
Timestamp: 2025-04-11T11:23:44.192Z
Learning: In the PostgreSQL for Doctrine test cases, methods that test database-to-PHP conversions should use `mixed` type for parameter and include non-string test cases in their data providers, following the pattern in classes like InetTest, CidrTest, and MacaddrTest.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#383
File: tests/Unit/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RadiansTest.php:1-9
Timestamp: 2025-05-23T11:11:57.951Z
Learning: Tests in the `Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase directly, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), not PHPUnit's TestCase, and therefore don't need an explicit import statement.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#357
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpMatchTest.php:28-62
Timestamp: 2025-04-22T00:03:37.733Z
Learning: This project focuses on providing Doctrine ORM interfaces to PostgreSQL functions. Tests should validate correct DQL-to-SQL translation rather than PostgreSQL functionality itself. Test cases should focus on parameter passing and SQL generation, not on testing specific PostgreSQL regex pattern behaviors.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#0
File: :0-0
Timestamp: 2025-04-17T12:29:38.149Z
Learning: All new features in this repository must include proper test coverage before approval.
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseTimestampRange.php (2)
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#263
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/Numrange.php:19-21
Timestamp: 2025-03-11T12:32:10.726Z
Learning: In the postgresql-for-doctrine repository, PostgreSQL range functions have distinct implementations for different data types. The `Numrange` function works with numeric/decimal values and is tested using the `ContainsDecimals` fixture with properties typed as `float`. In contrast, the `Int4range` function works with 32-bit integers and is tested using the `ContainsIntegers` fixture with properties typed as `int`. While the PHP implementations share a similar structure (extending `BaseFunction`), they are semantically different as they handle different PostgreSQL data types.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#340
File: tests/MartinGeorgiev/Doctrine/DBAL/Types/InetArrayTest.php:145-145
Timestamp: 2025-04-11T11:23:44.192Z
Learning: In the PostgreSQL for Doctrine test cases, methods that test database-to-PHP conversions should use `mixed` type for parameter and include non-string test cases in their data providers, following the pattern in classes like InetTest, CidrTest, and MacaddrTest.
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/Range.php (3)
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#263
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/Numrange.php:19-21
Timestamp: 2025-03-11T12:32:10.726Z
Learning: In the postgresql-for-doctrine repository, PostgreSQL range functions have distinct implementations for different data types. The `Numrange` function works with numeric/decimal values and is tested using the `ContainsDecimals` fixture with properties typed as `float`. In contrast, the `Int4range` function works with 32-bit integers and is tested using the `ContainsIntegers` fixture with properties typed as `int`. While the PHP implementations share a similar structure (extending `BaseFunction`), they are semantically different as they handle different PostgreSQL data types.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#340
File: tests/MartinGeorgiev/Doctrine/DBAL/Types/InetArrayTest.php:145-145
Timestamp: 2025-04-11T11:23:44.192Z
Learning: In the PostgreSQL for Doctrine test cases, methods that test database-to-PHP conversions should use `mixed` type for parameter and include non-string test cases in their data providers, following the pattern in classes like InetTest, CidrTest, and MacaddrTest.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#0
File: :0-0
Timestamp: 2025-03-26T02:46:12.804Z
Learning: The PR "preserve the type of floats and integers when transforming back and forth between PostgreSQL and PHP" improves type handling by ensuring that integers remain integers, floats remain floats, numeric strings stay as strings, and booleans are properly converted through the transformation process.
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/TstzRangeTest.php (7)
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#263
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/Numrange.php:19-21
Timestamp: 2025-03-11T12:32:10.726Z
Learning: In the postgresql-for-doctrine repository, PostgreSQL range functions have distinct implementations for different data types. The `Numrange` function works with numeric/decimal values and is tested using the `ContainsDecimals` fixture with properties typed as `float`. In contrast, the `Int4range` function works with 32-bit integers and is tested using the `ContainsIntegers` fixture with properties typed as `int`. While the PHP implementations share a similar structure (extending `BaseFunction`), they are semantically different as they handle different PostgreSQL data types.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#383
File: tests/Unit/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RadiansTest.php:1-9
Timestamp: 2025-05-23T11:11:57.951Z
Learning: Tests in the `Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase directly, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), not PHPUnit's TestCase, and therefore don't need an explicit import statement.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#340
File: tests/MartinGeorgiev/Doctrine/DBAL/Types/InetArrayTest.php:145-145
Timestamp: 2025-04-11T11:23:44.192Z
Learning: In the PostgreSQL for Doctrine test cases, methods that test database-to-PHP conversions should use `mixed` type for parameter and include non-string test cases in their data providers, following the pattern in classes like InetTest, CidrTest, and MacaddrTest.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#357
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpMatchTest.php:28-62
Timestamp: 2025-04-22T00:03:37.733Z
Learning: This project focuses on providing Doctrine ORM interfaces to PostgreSQL functions. Tests should validate correct DQL-to-SQL translation rather than PostgreSQL functionality itself. Test cases should focus on parameter passing and SQL generation, not on testing specific PostgreSQL regex pattern behaviors.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#0
File: :0-0
Timestamp: 2025-04-17T12:29:38.149Z
Learning: All new features in this repository must include proper test coverage before approval.
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/NumericRangeTest.php (5)
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#263
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/Numrange.php:19-21
Timestamp: 2025-03-11T12:32:10.726Z
Learning: In the postgresql-for-doctrine repository, PostgreSQL range functions have distinct implementations for different data types. The `Numrange` function works with numeric/decimal values and is tested using the `ContainsDecimals` fixture with properties typed as `float`. In contrast, the `Int4range` function works with 32-bit integers and is tested using the `ContainsIntegers` fixture with properties typed as `int`. While the PHP implementations share a similar structure (extending `BaseFunction`), they are semantically different as they handle different PostgreSQL data types.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#340
File: tests/MartinGeorgiev/Doctrine/DBAL/Types/InetArrayTest.php:145-145
Timestamp: 2025-04-11T11:23:44.192Z
Learning: In the PostgreSQL for Doctrine test cases, methods that test database-to-PHP conversions should use `mixed` type for parameter and include non-string test cases in their data providers, following the pattern in classes like InetTest, CidrTest, and MacaddrTest.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#383
File: tests/Unit/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RadiansTest.php:1-9
Timestamp: 2025-05-23T11:11:57.951Z
Learning: Tests in the `Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase directly, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), not PHPUnit's TestCase, and therefore don't need an explicit import statement.
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/TsRangeTest.php (10)
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#263
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/Numrange.php:19-21
Timestamp: 2025-03-11T12:32:10.726Z
Learning: In the postgresql-for-doctrine repository, PostgreSQL range functions have distinct implementations for different data types. The `Numrange` function works with numeric/decimal values and is tested using the `ContainsDecimals` fixture with properties typed as `float`. In contrast, the `Int4range` function works with 32-bit integers and is tested using the `ContainsIntegers` fixture with properties typed as `int`. While the PHP implementations share a similar structure (extending `BaseFunction`), they are semantically different as they handle different PostgreSQL data types.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#340
File: tests/MartinGeorgiev/Doctrine/DBAL/Types/InetArrayTest.php:145-145
Timestamp: 2025-04-11T11:23:44.192Z
Learning: In the PostgreSQL for Doctrine test cases, methods that test database-to-PHP conversions should use `mixed` type for parameter and include non-string test cases in their data providers, following the pattern in classes like InetTest, CidrTest, and MacaddrTest.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#383
File: tests/Unit/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RadiansTest.php:1-9
Timestamp: 2025-05-23T11:11:57.951Z
Learning: Tests in the `Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase directly, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), not PHPUnit's TestCase, and therefore don't need an explicit import statement.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#357
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpMatchTest.php:28-62
Timestamp: 2025-04-22T00:03:37.733Z
Learning: This project focuses on providing Doctrine ORM interfaces to PostgreSQL functions. Tests should validate correct DQL-to-SQL translation rather than PostgreSQL functionality itself. Test cases should focus on parameter passing and SQL generation, not on testing specific PostgreSQL regex pattern behaviors.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#352
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpInstrTest.php:1-67
Timestamp: 2025-04-20T11:24:18.300Z
Learning: This PostgreSQL-for-Doctrine project is a translation layer only, focusing on correctly converting Doctrine DQL to PostgreSQL SQL syntax. It ensures arguments are passed in the expected format but does not test or handle PostgreSQL's actual function behavior or data handling. Test cases should focus on DQL-to-SQL translation and argument validation, not on PostgreSQL-specific behaviors.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#350
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/BaseVariadicFunction.php:78-88
Timestamp: 2025-04-18T10:33:52.412Z
Learning: In SQL generation code for the postgresql-for-doctrine library, it's better to fail explicitly with clear errors than to use fallback behavior that makes assumptions about node types, as this could lead to functional bugs or security issues.
Learnt from: karpilin
PR: martin-georgiev/postgresql-for-doctrine#386
File: tests/Integration/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ToTimestampTest.php:34-39
Timestamp: 2025-05-27T16:10:35.054Z
Learning: When reviewing PostgreSQL formatting function tests, the error handling behavior should match PostgreSQL's actual implementation rather than assuming consistency across all formatting functions, as different functions may handle invalid inputs differently.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#0
File: :0-0
Timestamp: 2025-03-26T02:46:12.804Z
Learning: The PR "preserve the type of floats and integers when transforming back and forth between PostgreSQL and PHP" improves type handling by ensuring that integers remain integers, floats remain floats, numeric strings stay as strings, and booleans are properly converted through the transformation process.
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/NumericRange.php (3)
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#263
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/Numrange.php:19-21
Timestamp: 2025-03-11T12:32:10.726Z
Learning: In the postgresql-for-doctrine repository, PostgreSQL range functions have distinct implementations for different data types. The `Numrange` function works with numeric/decimal values and is tested using the `ContainsDecimals` fixture with properties typed as `float`. In contrast, the `Int4range` function works with 32-bit integers and is tested using the `ContainsIntegers` fixture with properties typed as `int`. While the PHP implementations share a similar structure (extending `BaseFunction`), they are semantically different as they handle different PostgreSQL data types.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#0
File: :0-0
Timestamp: 2025-03-26T02:46:12.804Z
Learning: The PR "preserve the type of floats and integers when transforming back and forth between PostgreSQL and PHP" improves type handling by ensuring that integers remain integers, floats remain floats, numeric strings stay as strings, and booleans are properly converted through the transformation process.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#340
File: tests/MartinGeorgiev/Doctrine/DBAL/Types/InetArrayTest.php:145-145
Timestamp: 2025-04-11T11:23:44.192Z
Learning: In the PostgreSQL for Doctrine test cases, methods that test database-to-PHP conversions should use `mixed` type for parameter and include non-string test cases in their data providers, following the pattern in classes like InetTest, CidrTest, and MacaddrTest.
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/Int4RangeTest.php (6)
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#263
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/Numrange.php:19-21
Timestamp: 2025-03-11T12:32:10.726Z
Learning: In the postgresql-for-doctrine repository, PostgreSQL range functions have distinct implementations for different data types. The `Numrange` function works with numeric/decimal values and is tested using the `ContainsDecimals` fixture with properties typed as `float`. In contrast, the `Int4range` function works with 32-bit integers and is tested using the `ContainsIntegers` fixture with properties typed as `int`. While the PHP implementations share a similar structure (extending `BaseFunction`), they are semantically different as they handle different PostgreSQL data types.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#383
File: tests/Unit/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RadiansTest.php:1-9
Timestamp: 2025-05-23T11:11:57.951Z
Learning: Tests in the `Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase directly, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#340
File: tests/MartinGeorgiev/Doctrine/DBAL/Types/InetArrayTest.php:145-145
Timestamp: 2025-04-11T11:23:44.192Z
Learning: In the PostgreSQL for Doctrine test cases, methods that test database-to-PHP conversions should use `mixed` type for parameter and include non-string test cases in their data providers, following the pattern in classes like InetTest, CidrTest, and MacaddrTest.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), not PHPUnit's TestCase, and therefore don't need an explicit import statement.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#357
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpMatchTest.php:28-62
Timestamp: 2025-04-22T00:03:37.733Z
Learning: This project focuses on providing Doctrine ORM interfaces to PostgreSQL functions. Tests should validate correct DQL-to-SQL translation rather than PostgreSQL functionality itself. Test cases should focus on parameter passing and SQL generation, not on testing specific PostgreSQL regex pattern behaviors.
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/Int4RangeTest.php (9)
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#263
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/Numrange.php:19-21
Timestamp: 2025-03-11T12:32:10.726Z
Learning: In the postgresql-for-doctrine repository, PostgreSQL range functions have distinct implementations for different data types. The `Numrange` function works with numeric/decimal values and is tested using the `ContainsDecimals` fixture with properties typed as `float`. In contrast, the `Int4range` function works with 32-bit integers and is tested using the `ContainsIntegers` fixture with properties typed as `int`. While the PHP implementations share a similar structure (extending `BaseFunction`), they are semantically different as they handle different PostgreSQL data types.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#340
File: tests/MartinGeorgiev/Doctrine/DBAL/Types/InetArrayTest.php:145-145
Timestamp: 2025-04-11T11:23:44.192Z
Learning: In the PostgreSQL for Doctrine test cases, methods that test database-to-PHP conversions should use `mixed` type for parameter and include non-string test cases in their data providers, following the pattern in classes like InetTest, CidrTest, and MacaddrTest.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#383
File: tests/Unit/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RadiansTest.php:1-9
Timestamp: 2025-05-23T11:11:57.951Z
Learning: Tests in the `Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase directly, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), not PHPUnit's TestCase, and therefore don't need an explicit import statement.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#357
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpMatchTest.php:28-62
Timestamp: 2025-04-22T00:03:37.733Z
Learning: This project focuses on providing Doctrine ORM interfaces to PostgreSQL functions. Tests should validate correct DQL-to-SQL translation rather than PostgreSQL functionality itself. Test cases should focus on parameter passing and SQL generation, not on testing specific PostgreSQL regex pattern behaviors.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#352
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpInstrTest.php:1-67
Timestamp: 2025-04-20T11:24:18.300Z
Learning: This PostgreSQL-for-Doctrine project is a translation layer only, focusing on correctly converting Doctrine DQL to PostgreSQL SQL syntax. It ensures arguments are passed in the expected format but does not test or handle PostgreSQL's actual function behavior or data handling. Test cases should focus on DQL-to-SQL translation and argument validation, not on PostgreSQL-specific behaviors.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#0
File: :0-0
Timestamp: 2025-03-26T02:46:12.804Z
Learning: The PR "preserve the type of floats and integers when transforming back and forth between PostgreSQL and PHP" improves type handling by ensuring that integers remain integers, floats remain floats, numeric strings stay as strings, and booleans are properly converted through the transformation process.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#350
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/BaseVariadicFunction.php:78-88
Timestamp: 2025-04-18T10:33:52.412Z
Learning: In SQL generation code for the postgresql-for-doctrine library, it's better to fail explicitly with clear errors than to use fallback behavior that makes assumptions about node types, as this could lead to functional bugs or security issues.
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/DateRangeTest.php (8)
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#263
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/Numrange.php:19-21
Timestamp: 2025-03-11T12:32:10.726Z
Learning: In the postgresql-for-doctrine repository, PostgreSQL range functions have distinct implementations for different data types. The `Numrange` function works with numeric/decimal values and is tested using the `ContainsDecimals` fixture with properties typed as `float`. In contrast, the `Int4range` function works with 32-bit integers and is tested using the `ContainsIntegers` fixture with properties typed as `int`. While the PHP implementations share a similar structure (extending `BaseFunction`), they are semantically different as they handle different PostgreSQL data types.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#340
File: tests/MartinGeorgiev/Doctrine/DBAL/Types/InetArrayTest.php:145-145
Timestamp: 2025-04-11T11:23:44.192Z
Learning: In the PostgreSQL for Doctrine test cases, methods that test database-to-PHP conversions should use `mixed` type for parameter and include non-string test cases in their data providers, following the pattern in classes like InetTest, CidrTest, and MacaddrTest.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#357
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpMatchTest.php:28-62
Timestamp: 2025-04-22T00:03:37.733Z
Learning: This project focuses on providing Doctrine ORM interfaces to PostgreSQL functions. Tests should validate correct DQL-to-SQL translation rather than PostgreSQL functionality itself. Test cases should focus on parameter passing and SQL generation, not on testing specific PostgreSQL regex pattern behaviors.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#383
File: tests/Unit/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RadiansTest.php:1-9
Timestamp: 2025-05-23T11:11:57.951Z
Learning: Tests in the `Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase directly, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), not PHPUnit's TestCase, and therefore don't need an explicit import statement.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#352
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpInstrTest.php:1-67
Timestamp: 2025-04-20T11:24:18.300Z
Learning: This PostgreSQL-for-Doctrine project is a translation layer only, focusing on correctly converting Doctrine DQL to PostgreSQL SQL syntax. It ensures arguments are passed in the expected format but does not test or handle PostgreSQL's actual function behavior or data handling. Test cases should focus on DQL-to-SQL translation and argument validation, not on PostgreSQL-specific behaviors.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#350
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/BaseVariadicFunction.php:78-88
Timestamp: 2025-04-18T10:33:52.412Z
Learning: In SQL generation code for the postgresql-for-doctrine library, it's better to fail explicitly with clear errors than to use fallback behavior that makes assumptions about node types, as this could lead to functional bugs or security issues.
tests/Integration/MartinGeorgiev/Doctrine/DBAL/Types/DBALTypesTest.php (8)
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#263
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/Numrange.php:19-21
Timestamp: 2025-03-11T12:32:10.726Z
Learning: In the postgresql-for-doctrine repository, PostgreSQL range functions have distinct implementations for different data types. The `Numrange` function works with numeric/decimal values and is tested using the `ContainsDecimals` fixture with properties typed as `float`. In contrast, the `Int4range` function works with 32-bit integers and is tested using the `ContainsIntegers` fixture with properties typed as `int`. While the PHP implementations share a similar structure (extending `BaseFunction`), they are semantically different as they handle different PostgreSQL data types.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#340
File: tests/MartinGeorgiev/Doctrine/DBAL/Types/InetArrayTest.php:145-145
Timestamp: 2025-04-11T11:23:44.192Z
Learning: In the PostgreSQL for Doctrine test cases, methods that test database-to-PHP conversions should use `mixed` type for parameter and include non-string test cases in their data providers, following the pattern in classes like InetTest, CidrTest, and MacaddrTest.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#357
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpMatchTest.php:28-62
Timestamp: 2025-04-22T00:03:37.733Z
Learning: This project focuses on providing Doctrine ORM interfaces to PostgreSQL functions. Tests should validate correct DQL-to-SQL translation rather than PostgreSQL functionality itself. Test cases should focus on parameter passing and SQL generation, not on testing specific PostgreSQL regex pattern behaviors.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#383
File: tests/Unit/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RadiansTest.php:1-9
Timestamp: 2025-05-23T11:11:57.951Z
Learning: Tests in the `Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase directly, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), not PHPUnit's TestCase, and therefore don't need an explicit import statement.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#352
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpInstrTest.php:1-67
Timestamp: 2025-04-20T11:24:18.300Z
Learning: This PostgreSQL-for-Doctrine project is a translation layer only, focusing on correctly converting Doctrine DQL to PostgreSQL SQL syntax. It ensures arguments are passed in the expected format but does not test or handle PostgreSQL's actual function behavior or data handling. Test cases should focus on DQL-to-SQL translation and argument validation, not on PostgreSQL-specific behaviors.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#0
File: :0-0
Timestamp: 2025-03-26T02:46:12.804Z
Learning: The PR "preserve the type of floats and integers when transforming back and forth between PostgreSQL and PHP" improves type handling by ensuring that integers remain integers, floats remain floats, numeric strings stay as strings, and booleans are properly converted through the transformation process.
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/NumRangeTest.php (10)
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#263
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/Numrange.php:19-21
Timestamp: 2025-03-11T12:32:10.726Z
Learning: In the postgresql-for-doctrine repository, PostgreSQL range functions have distinct implementations for different data types. The `Numrange` function works with numeric/decimal values and is tested using the `ContainsDecimals` fixture with properties typed as `float`. In contrast, the `Int4range` function works with 32-bit integers and is tested using the `ContainsIntegers` fixture with properties typed as `int`. While the PHP implementations share a similar structure (extending `BaseFunction`), they are semantically different as they handle different PostgreSQL data types.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#340
File: tests/MartinGeorgiev/Doctrine/DBAL/Types/InetArrayTest.php:145-145
Timestamp: 2025-04-11T11:23:44.192Z
Learning: In the PostgreSQL for Doctrine test cases, methods that test database-to-PHP conversions should use `mixed` type for parameter and include non-string test cases in their data providers, following the pattern in classes like InetTest, CidrTest, and MacaddrTest.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#357
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpMatchTest.php:28-62
Timestamp: 2025-04-22T00:03:37.733Z
Learning: This project focuses on providing Doctrine ORM interfaces to PostgreSQL functions. Tests should validate correct DQL-to-SQL translation rather than PostgreSQL functionality itself. Test cases should focus on parameter passing and SQL generation, not on testing specific PostgreSQL regex pattern behaviors.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#383
File: tests/Unit/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RadiansTest.php:1-9
Timestamp: 2025-05-23T11:11:57.951Z
Learning: Tests in the `Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase directly, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), not PHPUnit's TestCase, and therefore don't need an explicit import statement.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#352
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpInstrTest.php:1-67
Timestamp: 2025-04-20T11:24:18.300Z
Learning: This PostgreSQL-for-Doctrine project is a translation layer only, focusing on correctly converting Doctrine DQL to PostgreSQL SQL syntax. It ensures arguments are passed in the expected format but does not test or handle PostgreSQL's actual function behavior or data handling. Test cases should focus on DQL-to-SQL translation and argument validation, not on PostgreSQL-specific behaviors.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#0
File: :0-0
Timestamp: 2025-03-26T02:46:12.804Z
Learning: The PR "preserve the type of floats and integers when transforming back and forth between PostgreSQL and PHP" improves type handling by ensuring that integers remain integers, floats remain floats, numeric strings stay as strings, and booleans are properly converted through the transformation process.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#350
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/BaseVariadicFunction.php:78-88
Timestamp: 2025-04-18T10:33:52.412Z
Learning: In SQL generation code for the postgresql-for-doctrine library, it's better to fail explicitly with clear errors than to use fallback behavior that makes assumptions about node types, as this could lead to functional bugs or security issues.
Learnt from: karpilin
PR: martin-georgiev/postgresql-for-doctrine#386
File: tests/Integration/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ToTimestampTest.php:34-39
Timestamp: 2025-05-27T16:10:35.054Z
Learning: When reviewing PostgreSQL formatting function tests, the error handling behavior should match PostgreSQL's actual implementation rather than assuming consistency across all formatting functions, as different functions may handle invalid inputs differently.
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/TsRangeTest.php (7)
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#263
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/Numrange.php:19-21
Timestamp: 2025-03-11T12:32:10.726Z
Learning: In the postgresql-for-doctrine repository, PostgreSQL range functions have distinct implementations for different data types. The `Numrange` function works with numeric/decimal values and is tested using the `ContainsDecimals` fixture with properties typed as `float`. In contrast, the `Int4range` function works with 32-bit integers and is tested using the `ContainsIntegers` fixture with properties typed as `int`. While the PHP implementations share a similar structure (extending `BaseFunction`), they are semantically different as they handle different PostgreSQL data types.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#383
File: tests/Unit/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RadiansTest.php:1-9
Timestamp: 2025-05-23T11:11:57.951Z
Learning: Tests in the `Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase directly, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), not PHPUnit's TestCase, and therefore don't need an explicit import statement.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#340
File: tests/MartinGeorgiev/Doctrine/DBAL/Types/InetArrayTest.php:145-145
Timestamp: 2025-04-11T11:23:44.192Z
Learning: In the PostgreSQL for Doctrine test cases, methods that test database-to-PHP conversions should use `mixed` type for parameter and include non-string test cases in their data providers, following the pattern in classes like InetTest, CidrTest, and MacaddrTest.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#357
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpMatchTest.php:28-62
Timestamp: 2025-04-22T00:03:37.733Z
Learning: This project focuses on providing Doctrine ORM interfaces to PostgreSQL functions. Tests should validate correct DQL-to-SQL translation rather than PostgreSQL functionality itself. Test cases should focus on parameter passing and SQL generation, not on testing specific PostgreSQL regex pattern behaviors.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#0
File: :0-0
Timestamp: 2025-04-17T12:29:38.149Z
Learning: All new features in this repository must include proper test coverage before approval.
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/TstzRangeTest.php (10)
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#263
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/Numrange.php:19-21
Timestamp: 2025-03-11T12:32:10.726Z
Learning: In the postgresql-for-doctrine repository, PostgreSQL range functions have distinct implementations for different data types. The `Numrange` function works with numeric/decimal values and is tested using the `ContainsDecimals` fixture with properties typed as `float`. In contrast, the `Int4range` function works with 32-bit integers and is tested using the `ContainsIntegers` fixture with properties typed as `int`. While the PHP implementations share a similar structure (extending `BaseFunction`), they are semantically different as they handle different PostgreSQL data types.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#340
File: tests/MartinGeorgiev/Doctrine/DBAL/Types/InetArrayTest.php:145-145
Timestamp: 2025-04-11T11:23:44.192Z
Learning: In the PostgreSQL for Doctrine test cases, methods that test database-to-PHP conversions should use `mixed` type for parameter and include non-string test cases in their data providers, following the pattern in classes like InetTest, CidrTest, and MacaddrTest.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#383
File: tests/Unit/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RadiansTest.php:1-9
Timestamp: 2025-05-23T11:11:57.951Z
Learning: Tests in the `Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase directly, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), not PHPUnit's TestCase, and therefore don't need an explicit import statement.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#357
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpMatchTest.php:28-62
Timestamp: 2025-04-22T00:03:37.733Z
Learning: This project focuses on providing Doctrine ORM interfaces to PostgreSQL functions. Tests should validate correct DQL-to-SQL translation rather than PostgreSQL functionality itself. Test cases should focus on parameter passing and SQL generation, not on testing specific PostgreSQL regex pattern behaviors.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#352
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpInstrTest.php:1-67
Timestamp: 2025-04-20T11:24:18.300Z
Learning: This PostgreSQL-for-Doctrine project is a translation layer only, focusing on correctly converting Doctrine DQL to PostgreSQL SQL syntax. It ensures arguments are passed in the expected format but does not test or handle PostgreSQL's actual function behavior or data handling. Test cases should focus on DQL-to-SQL translation and argument validation, not on PostgreSQL-specific behaviors.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#350
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/BaseVariadicFunction.php:78-88
Timestamp: 2025-04-18T10:33:52.412Z
Learning: In SQL generation code for the postgresql-for-doctrine library, it's better to fail explicitly with clear errors than to use fallback behavior that makes assumptions about node types, as this could lead to functional bugs or security issues.
Learnt from: karpilin
PR: martin-georgiev/postgresql-for-doctrine#386
File: tests/Integration/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ToTimestampTest.php:34-39
Timestamp: 2025-05-27T16:10:35.054Z
Learning: When reviewing PostgreSQL formatting function tests, the error handling behavior should match PostgreSQL's actual implementation rather than assuming consistency across all formatting functions, as different functions may handle invalid inputs differently.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#0
File: :0-0
Timestamp: 2025-03-26T02:46:12.804Z
Learning: The PR "preserve the type of floats and integers when transforming back and forth between PostgreSQL and PHP" improves type handling by ensuring that integers remain integers, floats remain floats, numeric strings stay as strings, and booleans are properly converted through the transformation process.
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/Int8RangeTest.php (10)
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#263
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/Numrange.php:19-21
Timestamp: 2025-03-11T12:32:10.726Z
Learning: In the postgresql-for-doctrine repository, PostgreSQL range functions have distinct implementations for different data types. The `Numrange` function works with numeric/decimal values and is tested using the `ContainsDecimals` fixture with properties typed as `float`. In contrast, the `Int4range` function works with 32-bit integers and is tested using the `ContainsIntegers` fixture with properties typed as `int`. While the PHP implementations share a similar structure (extending `BaseFunction`), they are semantically different as they handle different PostgreSQL data types.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#340
File: tests/MartinGeorgiev/Doctrine/DBAL/Types/InetArrayTest.php:145-145
Timestamp: 2025-04-11T11:23:44.192Z
Learning: In the PostgreSQL for Doctrine test cases, methods that test database-to-PHP conversions should use `mixed` type for parameter and include non-string test cases in their data providers, following the pattern in classes like InetTest, CidrTest, and MacaddrTest.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#383
File: tests/Unit/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RadiansTest.php:1-9
Timestamp: 2025-05-23T11:11:57.951Z
Learning: Tests in the `Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase directly, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), not PHPUnit's TestCase, and therefore don't need an explicit import statement.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#357
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpMatchTest.php:28-62
Timestamp: 2025-04-22T00:03:37.733Z
Learning: This project focuses on providing Doctrine ORM interfaces to PostgreSQL functions. Tests should validate correct DQL-to-SQL translation rather than PostgreSQL functionality itself. Test cases should focus on parameter passing and SQL generation, not on testing specific PostgreSQL regex pattern behaviors.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#352
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpInstrTest.php:1-67
Timestamp: 2025-04-20T11:24:18.300Z
Learning: This PostgreSQL-for-Doctrine project is a translation layer only, focusing on correctly converting Doctrine DQL to PostgreSQL SQL syntax. It ensures arguments are passed in the expected format but does not test or handle PostgreSQL's actual function behavior or data handling. Test cases should focus on DQL-to-SQL translation and argument validation, not on PostgreSQL-specific behaviors.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#0
File: :0-0
Timestamp: 2025-03-26T02:46:12.804Z
Learning: The PR "preserve the type of floats and integers when transforming back and forth between PostgreSQL and PHP" improves type handling by ensuring that integers remain integers, floats remain floats, numeric strings stay as strings, and booleans are properly converted through the transformation process.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#350
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/BaseVariadicFunction.php:78-88
Timestamp: 2025-04-18T10:33:52.412Z
Learning: In SQL generation code for the postgresql-for-doctrine library, it's better to fail explicitly with clear errors than to use fallback behavior that makes assumptions about node types, as this could lead to functional bugs or security issues.
Learnt from: karpilin
PR: martin-georgiev/postgresql-for-doctrine#386
File: tests/Integration/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ToTimestampTest.php:34-39
Timestamp: 2025-05-27T16:10:35.054Z
Learning: When reviewing PostgreSQL formatting function tests, the error handling behavior should match PostgreSQL's actual implementation rather than assuming consistency across all formatting functions, as different functions may handle invalid inputs differently.
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/DateRange.php (2)
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#263
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/Numrange.php:19-21
Timestamp: 2025-03-11T12:32:10.726Z
Learning: In the postgresql-for-doctrine repository, PostgreSQL range functions have distinct implementations for different data types. The `Numrange` function works with numeric/decimal values and is tested using the `ContainsDecimals` fixture with properties typed as `float`. In contrast, the `Int4range` function works with 32-bit integers and is tested using the `ContainsIntegers` fixture with properties typed as `int`. While the PHP implementations share a similar structure (extending `BaseFunction`), they are semantically different as they handle different PostgreSQL data types.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#340
File: tests/MartinGeorgiev/Doctrine/DBAL/Types/InetArrayTest.php:145-145
Timestamp: 2025-04-11T11:23:44.192Z
Learning: In the PostgreSQL for Doctrine test cases, methods that test database-to-PHP conversions should use `mixed` type for parameter and include non-string test cases in their data providers, following the pattern in classes like InetTest, CidrTest, and MacaddrTest.
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/DateRangeTest.php (5)
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#263
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/Numrange.php:19-21
Timestamp: 2025-03-11T12:32:10.726Z
Learning: In the postgresql-for-doctrine repository, PostgreSQL range functions have distinct implementations for different data types. The `Numrange` function works with numeric/decimal values and is tested using the `ContainsDecimals` fixture with properties typed as `float`. In contrast, the `Int4range` function works with 32-bit integers and is tested using the `ContainsIntegers` fixture with properties typed as `int`. While the PHP implementations share a similar structure (extending `BaseFunction`), they are semantically different as they handle different PostgreSQL data types.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#383
File: tests/Unit/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RadiansTest.php:1-9
Timestamp: 2025-05-23T11:11:57.951Z
Learning: Tests in the `Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase directly, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), not PHPUnit's TestCase, and therefore don't need an explicit import statement.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#340
File: tests/MartinGeorgiev/Doctrine/DBAL/Types/InetArrayTest.php:145-145
Timestamp: 2025-04-11T11:23:44.192Z
Learning: In the PostgreSQL for Doctrine test cases, methods that test database-to-PHP conversions should use `mixed` type for parameter and include non-string test cases in their data providers, following the pattern in classes like InetTest, CidrTest, and MacaddrTest.
🧬 Code Graph Analysis (5)
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/Int8Range.php (2)
src/MartinGeorgiev/Doctrine/DBAL/Types/Int8Range.php (1)
Int8Range
(19-27)src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseIntegerRange.php (1)
BaseIntegerRange
(14-47)
src/MartinGeorgiev/Doctrine/DBAL/Types/Int8Range.php (3)
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/Int8Range.php (1)
Int8Range
(14-14)src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/Range.php (2)
Range
(16-145)fromString
(78-100)src/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeType.php (2)
BaseRangeType
(21-71)createFromString
(70-70)
src/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeType.php (8)
src/MartinGeorgiev/Doctrine/DBAL/Types/Exceptions/InvalidRangeForDatabaseException.php (3)
InvalidRangeForDatabaseException
(14-32)forInvalidType
(16-24)forInvalidFormat
(26-31)src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/Range.php (1)
Range
(16-145)src/MartinGeorgiev/Doctrine/DBAL/Types/Int4Range.php (1)
createFromString
(23-26)src/MartinGeorgiev/Doctrine/DBAL/Types/DateRange.php (1)
createFromString
(23-26)src/MartinGeorgiev/Doctrine/DBAL/Types/NumRange.php (1)
createFromString
(23-26)src/MartinGeorgiev/Doctrine/DBAL/Types/Int8Range.php (1)
createFromString
(23-26)src/MartinGeorgiev/Doctrine/DBAL/Types/TsRange.php (1)
createFromString
(23-26)src/MartinGeorgiev/Doctrine/DBAL/Types/TstzRange.php (1)
createFromString
(23-26)
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseTimestampRange.php (3)
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/Range.php (4)
Range
(16-145)__construct
(28-34)compareBounds
(74-74)parseValue
(102-102)src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseIntegerRange.php (3)
__construct
(16-24)compareBounds
(26-29)parseValue
(36-46)src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/DateRange.php (3)
__construct
(18-38)compareBounds
(40-43)parseValue
(54-65)
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/NumRangeTest.php (4)
src/MartinGeorgiev/Doctrine/DBAL/Types/NumRange.php (1)
NumRange
(19-27)src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/NumericRange.php (1)
NumericRange
(16-67)src/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeType.php (3)
getSQLDeclaration
(23-26)convertToDatabaseValue
(28-39)convertToPHPValue
(46-65)src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/Range.php (1)
empty
(136-139)
🪛 GitHub Check: PHP 8.4 + Doctrine ORM 2.14 + Doctrine Lexer latest
src/MartinGeorgiev/Doctrine/DBAL/Types/NumRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\NumRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/TsRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\TsRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/DateRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\DateRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/Int8Range.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\Int8Range contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/Int4Range.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\Int4Range contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeType.php
[failure] 25-25:
Method MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType::getSQLDeclaration() should return string but returns mixed.
[failure] 25-25:
Access to undefined constant static(MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType<T of MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range>)::TYPE_NAME.
src/MartinGeorgiev/Doctrine/DBAL/Types/TstzRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\TstzRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseIntegerRange.php
[failure] 33-33:
Cannot cast mixed to string.
[failure] 14-14:
Class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseIntegerRange extends generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: T
🪛 GitHub Check: PHP 8.1 + Doctrine ORM 2.14 + Doctrine Lexer 1.2
src/MartinGeorgiev/Doctrine/DBAL/Types/NumRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\NumRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/TsRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\TsRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/DateRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\DateRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/Int8Range.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\Int8Range contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/Int4Range.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\Int4Range contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeType.php
[failure] 25-25:
Method MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType::getSQLDeclaration() should return string but returns mixed.
[failure] 25-25:
Access to undefined constant static(MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType<T of MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range>)::TYPE_NAME.
src/MartinGeorgiev/Doctrine/DBAL/Types/TstzRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\TstzRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseIntegerRange.php
[failure] 33-33:
Cannot cast mixed to string.
[failure] 14-14:
Class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseIntegerRange extends generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: T
🪛 GitHub Check: PHP 8.4 + Doctrine ORM latest + Doctrine Lexer 2.1
src/MartinGeorgiev/Doctrine/DBAL/Types/NumRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\NumRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/TsRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\TsRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/DateRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\DateRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/Int8Range.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\Int8Range contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/Int4Range.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\Int4Range contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeType.php
[failure] 25-25:
Method MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType::getSQLDeclaration() should return string but returns mixed.
[failure] 25-25:
Access to undefined constant static(MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType<T of MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range>)::TYPE_NAME.
src/MartinGeorgiev/Doctrine/DBAL/Types/TstzRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\TstzRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseIntegerRange.php
[failure] 33-33:
Cannot cast mixed to string.
[failure] 14-14:
Class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseIntegerRange extends generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: T
🪛 GitHub Check: PHP 8.4 + Doctrine ORM 2.18 + Doctrine Lexer latest
src/MartinGeorgiev/Doctrine/DBAL/Types/NumRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\NumRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/TsRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\TsRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/DateRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\DateRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/Int8Range.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\Int8Range contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/Int4Range.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\Int4Range contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeType.php
[failure] 25-25:
Method MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType::getSQLDeclaration() should return string but returns mixed.
[failure] 25-25:
Access to undefined constant static(MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType<T of MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range>)::TYPE_NAME.
src/MartinGeorgiev/Doctrine/DBAL/Types/TstzRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\TstzRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseIntegerRange.php
[failure] 33-33:
Cannot cast mixed to string.
[failure] 14-14:
Class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseIntegerRange extends generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: T
🪛 GitHub Check: PHP 8.4 + Doctrine ORM 2.14 + Doctrine Lexer 2.1
src/MartinGeorgiev/Doctrine/DBAL/Types/NumRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\NumRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/TsRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\TsRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/DateRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\DateRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/Int8Range.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\Int8Range contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/Int4Range.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\Int4Range contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeType.php
[failure] 25-25:
Method MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType::getSQLDeclaration() should return string but returns mixed.
[failure] 25-25:
Access to undefined constant static(MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType<T of MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range>)::TYPE_NAME.
src/MartinGeorgiev/Doctrine/DBAL/Types/TstzRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\TstzRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseIntegerRange.php
[failure] 33-33:
Cannot cast mixed to string.
[failure] 14-14:
Class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseIntegerRange extends generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: T
🪛 GitHub Check: PHP 8.4 + Doctrine ORM 2.18 + Doctrine Lexer 2.1
src/MartinGeorgiev/Doctrine/DBAL/Types/NumRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\NumRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/TsRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\TsRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/DateRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\DateRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/Int8Range.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\Int8Range contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/Int4Range.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\Int4Range contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeType.php
[failure] 25-25:
Method MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType::getSQLDeclaration() should return string but returns mixed.
[failure] 25-25:
Access to undefined constant static(MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType<T of MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range>)::TYPE_NAME.
src/MartinGeorgiev/Doctrine/DBAL/Types/TstzRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\TstzRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseIntegerRange.php
[failure] 33-33:
Cannot cast mixed to string.
[failure] 14-14:
Class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseIntegerRange extends generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: T
🪛 GitHub Check: PHP 8.3 + Doctrine ORM 2.14 + Doctrine Lexer latest
src/MartinGeorgiev/Doctrine/DBAL/Types/NumRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\NumRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/TsRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\TsRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/DateRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\DateRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/Int8Range.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\Int8Range contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/Int4Range.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\Int4Range contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeType.php
[failure] 25-25:
Method MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType::getSQLDeclaration() should return string but returns mixed.
[failure] 25-25:
Access to undefined constant static(MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType<T of MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range>)::TYPE_NAME.
src/MartinGeorgiev/Doctrine/DBAL/Types/TstzRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\TstzRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseIntegerRange.php
[failure] 33-33:
Cannot cast mixed to string.
[failure] 14-14:
Class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseIntegerRange extends generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: T
🪛 GitHub Check: PHP 8.3 + Doctrine ORM 2.18 + Doctrine Lexer latest
src/MartinGeorgiev/Doctrine/DBAL/Types/NumRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\NumRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/TsRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\TsRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/DateRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\DateRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/Int8Range.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\Int8Range contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/Int4Range.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\Int4Range contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeType.php
[failure] 25-25:
Method MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType::getSQLDeclaration() should return string but returns mixed.
[failure] 25-25:
Access to undefined constant static(MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType<T of MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range>)::TYPE_NAME.
src/MartinGeorgiev/Doctrine/DBAL/Types/TstzRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\TstzRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseIntegerRange.php
[failure] 33-33:
Cannot cast mixed to string.
[failure] 14-14:
Class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseIntegerRange extends generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: T
🪛 GitHub Check: PHP 8.4 + Doctrine ORM 2.18 + Doctrine Lexer 3.0
src/MartinGeorgiev/Doctrine/DBAL/Types/NumRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\NumRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/TsRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\TsRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/DateRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\DateRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/Int8Range.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\Int8Range contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/Int4Range.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\Int4Range contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeType.php
[failure] 25-25:
Method MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType::getSQLDeclaration() should return string but returns mixed.
[failure] 25-25:
Access to undefined constant static(MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType<T of MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range>)::TYPE_NAME.
src/MartinGeorgiev/Doctrine/DBAL/Types/TstzRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\TstzRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseIntegerRange.php
[failure] 33-33:
Cannot cast mixed to string.
[failure] 14-14:
Class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseIntegerRange extends generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: T
🪛 GitHub Check: PHP 8.1 + Doctrine ORM 2.14 + Doctrine Lexer latest
src/MartinGeorgiev/Doctrine/DBAL/Types/NumRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\NumRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/TsRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\TsRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/DateRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\DateRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/Int8Range.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\Int8Range contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/Int4Range.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\Int4Range contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeType.php
[failure] 25-25:
Method MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType::getSQLDeclaration() should return string but returns mixed.
[failure] 25-25:
Access to undefined constant static(MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType<T of MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range>)::TYPE_NAME.
src/MartinGeorgiev/Doctrine/DBAL/Types/TstzRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\TstzRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseIntegerRange.php
[failure] 33-33:
Cannot cast mixed to string.
[failure] 14-14:
Class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseIntegerRange extends generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: T
🪛 GitHub Check: PHP 8.3 + Doctrine ORM latest + Doctrine Lexer 2.1
src/MartinGeorgiev/Doctrine/DBAL/Types/NumRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\NumRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/TsRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\TsRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/DateRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\DateRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/Int8Range.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\Int8Range contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/Int4Range.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\Int4Range contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeType.php
[failure] 25-25:
Method MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType::getSQLDeclaration() should return string but returns mixed.
[failure] 25-25:
Access to undefined constant static(MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType<T of MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range>)::TYPE_NAME.
src/MartinGeorgiev/Doctrine/DBAL/Types/TstzRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\TstzRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseIntegerRange.php
[failure] 33-33:
Cannot cast mixed to string.
[failure] 14-14:
Class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseIntegerRange extends generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: T
🪛 GitHub Check: PHP 8.2 + Doctrine ORM 2.18 + Doctrine Lexer 2.1
src/MartinGeorgiev/Doctrine/DBAL/Types/NumRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\NumRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/TsRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\TsRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/DateRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\DateRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/Int8Range.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\Int8Range contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/Int4Range.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\Int4Range contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeType.php
[failure] 25-25:
Method MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType::getSQLDeclaration() should return string but returns mixed.
[failure] 25-25:
Access to undefined constant static(MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType<T of MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range>)::TYPE_NAME.
src/MartinGeorgiev/Doctrine/DBAL/Types/TstzRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\TstzRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseIntegerRange.php
[failure] 33-33:
Cannot cast mixed to string.
[failure] 14-14:
Class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseIntegerRange extends generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: T
🪛 GitHub Check: PHP 8.3 + Doctrine ORM 2.18 + Doctrine Lexer 2.1
src/MartinGeorgiev/Doctrine/DBAL/Types/NumRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\NumRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/TsRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\TsRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/DateRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\DateRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/Int8Range.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\Int8Range contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/Int4Range.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\Int4Range contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeType.php
[failure] 25-25:
Method MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType::getSQLDeclaration() should return string but returns mixed.
[failure] 25-25:
Access to undefined constant static(MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType<T of MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range>)::TYPE_NAME.
src/MartinGeorgiev/Doctrine/DBAL/Types/TstzRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\TstzRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseIntegerRange.php
[failure] 33-33:
Cannot cast mixed to string.
[failure] 14-14:
Class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseIntegerRange extends generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: T
🪛 GitHub Check: PHP 8.3 + Doctrine ORM 2.18 + Doctrine Lexer 3.0
src/MartinGeorgiev/Doctrine/DBAL/Types/NumRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\NumRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/TsRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\TsRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/DateRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\DateRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/Int8Range.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\Int8Range contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/Int4Range.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\Int4Range contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeType.php
[failure] 25-25:
Method MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType::getSQLDeclaration() should return string but returns mixed.
[failure] 25-25:
Access to undefined constant static(MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType<T of MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range>)::TYPE_NAME.
src/MartinGeorgiev/Doctrine/DBAL/Types/TstzRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\TstzRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseIntegerRange.php
[failure] 33-33:
Cannot cast mixed to string.
[failure] 14-14:
Class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseIntegerRange extends generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: T
🪛 GitHub Check: PHP 8.2 + Doctrine ORM 2.14 + Doctrine Lexer 2.1
src/MartinGeorgiev/Doctrine/DBAL/Types/NumRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\NumRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/TsRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\TsRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/DateRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\DateRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/Int8Range.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\Int8Range contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/Int4Range.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\Int4Range contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeType.php
[failure] 25-25:
Method MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType::getSQLDeclaration() should return string but returns mixed.
[failure] 25-25:
Access to undefined constant static(MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType<T of MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range>)::TYPE_NAME.
src/MartinGeorgiev/Doctrine/DBAL/Types/TstzRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\TstzRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseIntegerRange.php
[failure] 33-33:
Cannot cast mixed to string.
[failure] 14-14:
Class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseIntegerRange extends generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: T
🪛 GitHub Check: PHP 8.2 + Doctrine ORM latest + Doctrine Lexer 2.1
src/MartinGeorgiev/Doctrine/DBAL/Types/NumRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\NumRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/TsRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\TsRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/DateRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\DateRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/Int8Range.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\Int8Range contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/Int4Range.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\Int4Range contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeType.php
[failure] 25-25:
Method MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType::getSQLDeclaration() should return string but returns mixed.
[failure] 25-25:
Access to undefined constant static(MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType<T of MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range>)::TYPE_NAME.
src/MartinGeorgiev/Doctrine/DBAL/Types/TstzRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\TstzRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseIntegerRange.php
[failure] 33-33:
Cannot cast mixed to string.
[failure] 14-14:
Class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseIntegerRange extends generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: T
🪛 GitHub Check: PHP 8.1 + Doctrine ORM 2.18 + Doctrine Lexer latest
src/MartinGeorgiev/Doctrine/DBAL/Types/NumRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\NumRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/TsRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\TsRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/DateRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\DateRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/Int8Range.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\Int8Range contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/Int4Range.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\Int4Range contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeType.php
[failure] 25-25:
Method MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType::getSQLDeclaration() should return string but returns mixed.
[failure] 25-25:
Access to undefined constant static(MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType<T of MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range>)::TYPE_NAME.
src/MartinGeorgiev/Doctrine/DBAL/Types/TstzRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\TstzRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseIntegerRange.php
[failure] 33-33:
Cannot cast mixed to string.
[failure] 14-14:
Class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseIntegerRange extends generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: T
🪛 GitHub Check: PHP 8.2 + Doctrine ORM 2.14 + Doctrine Lexer latest
src/MartinGeorgiev/Doctrine/DBAL/Types/NumRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\NumRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/TsRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\TsRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/DateRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\DateRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/Int8Range.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\Int8Range contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/Int4Range.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\Int4Range contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeType.php
[failure] 25-25:
Method MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType::getSQLDeclaration() should return string but returns mixed.
[failure] 25-25:
Access to undefined constant static(MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType<T of MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range>)::TYPE_NAME.
src/MartinGeorgiev/Doctrine/DBAL/Types/TstzRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\TstzRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseIntegerRange.php
[failure] 33-33:
Cannot cast mixed to string.
[failure] 14-14:
Class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseIntegerRange extends generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: T
🪛 GitHub Check: PHP 8.3 + Doctrine ORM 2.14 + Doctrine Lexer 2.1
src/MartinGeorgiev/Doctrine/DBAL/Types/NumRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\NumRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/TsRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\TsRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/DateRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\DateRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/Int8Range.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\Int8Range contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/Int4Range.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\Int4Range contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeType.php
[failure] 25-25:
Method MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType::getSQLDeclaration() should return string but returns mixed.
[failure] 25-25:
Access to undefined constant static(MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType<T of MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range>)::TYPE_NAME.
src/MartinGeorgiev/Doctrine/DBAL/Types/TstzRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\TstzRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseIntegerRange.php
[failure] 33-33:
Cannot cast mixed to string.
[failure] 14-14:
Class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseIntegerRange extends generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: T
🪛 GitHub Check: PHP 8.2 + Doctrine ORM 2.18 + Doctrine Lexer 3.0
src/MartinGeorgiev/Doctrine/DBAL/Types/NumRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\NumRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/TsRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\TsRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/DateRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\DateRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/Int8Range.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\Int8Range contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/Int4Range.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\Int4Range contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeType.php
[failure] 25-25:
Method MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType::getSQLDeclaration() should return string but returns mixed.
[failure] 25-25:
Access to undefined constant static(MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType<T of MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range>)::TYPE_NAME.
src/MartinGeorgiev/Doctrine/DBAL/Types/TstzRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\TstzRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseIntegerRange.php
[failure] 33-33:
Cannot cast mixed to string.
[failure] 14-14:
Class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseIntegerRange extends generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: T
🪛 GitHub Check: PHP 8.1 + Doctrine ORM 2.14 + Doctrine Lexer 2.1
src/MartinGeorgiev/Doctrine/DBAL/Types/NumRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\NumRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/TsRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\TsRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/DateRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\DateRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/Int8Range.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\Int8Range contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/Int4Range.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\Int4Range contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeType.php
[failure] 25-25:
Method MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType::getSQLDeclaration() should return string but returns mixed.
[failure] 25-25:
Access to undefined constant static(MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType<T of MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range>)::TYPE_NAME.
src/MartinGeorgiev/Doctrine/DBAL/Types/TstzRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\TstzRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseIntegerRange.php
[failure] 33-33:
Cannot cast mixed to string.
[failure] 14-14:
Class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseIntegerRange extends generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: T
🪛 GitHub Check: PHP 8.2 + Doctrine ORM 2.18 + Doctrine Lexer latest
src/MartinGeorgiev/Doctrine/DBAL/Types/NumRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\NumRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/TsRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\TsRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/DateRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\DateRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/Int8Range.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\Int8Range contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/Int4Range.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\Int4Range contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeType.php
[failure] 25-25:
Method MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType::getSQLDeclaration() should return string but returns mixed.
[failure] 25-25:
Access to undefined constant static(MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType<T of MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range>)::TYPE_NAME.
src/MartinGeorgiev/Doctrine/DBAL/Types/TstzRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\TstzRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseIntegerRange.php
[failure] 33-33:
Cannot cast mixed to string.
[failure] 14-14:
Class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseIntegerRange extends generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: T
🪛 GitHub Check: PHP 8.1 + Doctrine ORM 2.18 + Doctrine Lexer 3.0
src/MartinGeorgiev/Doctrine/DBAL/Types/NumRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\NumRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/TsRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\TsRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/DateRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\DateRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/Int8Range.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\Int8Range contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/Int4Range.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\Int4Range contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeType.php
[failure] 25-25:
Method MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType::getSQLDeclaration() should return string but returns mixed.
[failure] 25-25:
Access to undefined constant static(MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType<T of MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range>)::TYPE_NAME.
src/MartinGeorgiev/Doctrine/DBAL/Types/TstzRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\TstzRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseIntegerRange.php
[failure] 33-33:
Cannot cast mixed to string.
[failure] 14-14:
Class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseIntegerRange extends generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: T
🪛 GitHub Check: PHP 8.1 + Doctrine ORM latest + Doctrine Lexer 2.1
src/MartinGeorgiev/Doctrine/DBAL/Types/NumRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\NumRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/TsRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\TsRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/DateRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\DateRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/Int8Range.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\Int8Range contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/Int4Range.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\Int4Range contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeType.php
[failure] 25-25:
Method MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType::getSQLDeclaration() should return string but returns mixed.
[failure] 25-25:
Access to undefined constant static(MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType<T of MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range>)::TYPE_NAME.
src/MartinGeorgiev/Doctrine/DBAL/Types/TstzRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\TstzRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseIntegerRange.php
[failure] 33-33:
Cannot cast mixed to string.
[failure] 14-14:
Class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseIntegerRange extends generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: T
🪛 GitHub Check: PHP 8.1 + Doctrine ORM 2.18 + Doctrine Lexer 2.1
src/MartinGeorgiev/Doctrine/DBAL/Types/NumRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\NumRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/TsRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\TsRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/DateRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\DateRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/Int8Range.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\Int8Range contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/Int4Range.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\Int4Range contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeType.php
[failure] 25-25:
Method MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType::getSQLDeclaration() should return string but returns mixed.
[failure] 25-25:
Access to undefined constant static(MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType<T of MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range>)::TYPE_NAME.
src/MartinGeorgiev/Doctrine/DBAL/Types/TstzRange.php
[failure] 19-19:
Non-abstract class MartinGeorgiev\Doctrine\DBAL\Types\TstzRange contains abstract method getName() from class Doctrine\DBAL\Types\Type.
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseIntegerRange.php
[failure] 33-33:
Cannot cast mixed to string.
[failure] 14-14:
Class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseIntegerRange extends generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: T
🪛 PHPMD (2.15.0)
src/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeType.php
23-23: Avoid unused parameters such as '$column'. (Unused Code Rules)
(UnusedFormalParameter)
23-23: Avoid unused parameters such as '$platform'. (Unused Code Rules)
(UnusedFormalParameter)
28-28: Avoid unused parameters such as '$platform'. (Unused Code Rules)
(UnusedFormalParameter)
46-46: Avoid unused parameters such as '$platform'. (Unused Code Rules)
(UnusedFormalParameter)
🪛 GitHub Check: PHP 8.4 + Doctrine ORM 3.0 + Doctrine Lexer 3.0
src/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeType.php
[failure] 25-25:
Method MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType::getSQLDeclaration() should return string but returns mixed.
[failure] 25-25:
Access to undefined constant static(MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType<T of MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range>)::TYPE_NAME.
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseIntegerRange.php
[failure] 33-33:
Cannot cast mixed to string.
[failure] 14-14:
Class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseIntegerRange extends generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: T
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseTimestampRange.php
[failure] 34-34:
Cannot cast mixed to int.
[failure] 34-34:
Cannot call method format() on mixed.
[failure] 34-34:
Cannot call method format() on mixed.
[failure] 28-28:
Cannot call method getTimestamp() on mixed.
[failure] 28-28:
Cannot call method getTimestamp() on mixed.
[failure] 14-14:
Class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseTimestampRange extends generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: T
🪛 GitHub Check: PHP 8.4 + Doctrine ORM 3.0 + Doctrine Lexer latest
src/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeType.php
[failure] 25-25:
Method MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType::getSQLDeclaration() should return string but returns mixed.
[failure] 25-25:
Access to undefined constant static(MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType<T of MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range>)::TYPE_NAME.
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseIntegerRange.php
[failure] 33-33:
Cannot cast mixed to string.
[failure] 14-14:
Class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseIntegerRange extends generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: T
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseTimestampRange.php
[failure] 34-34:
Cannot cast mixed to int.
[failure] 34-34:
Cannot call method format() on mixed.
[failure] 34-34:
Cannot call method format() on mixed.
[failure] 28-28:
Cannot call method getTimestamp() on mixed.
[failure] 28-28:
Cannot call method getTimestamp() on mixed.
[failure] 14-14:
Class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseTimestampRange extends generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: T
🪛 GitHub Check: PHP 8.4 + Doctrine ORM latest + Doctrine Lexer 3.0
src/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeType.php
[failure] 25-25:
Method MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType::getSQLDeclaration() should return string but returns mixed.
[failure] 25-25:
Access to undefined constant static(MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType<T of MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range>)::TYPE_NAME.
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseIntegerRange.php
[failure] 33-33:
Cannot cast mixed to string.
[failure] 14-14:
Class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseIntegerRange extends generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: T
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseTimestampRange.php
[failure] 34-34:
Cannot cast mixed to int.
[failure] 34-34:
Cannot call method format() on mixed.
[failure] 34-34:
Cannot call method format() on mixed.
[failure] 28-28:
Cannot call method getTimestamp() on mixed.
[failure] 28-28:
Cannot call method getTimestamp() on mixed.
[failure] 14-14:
Class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseTimestampRange extends generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: T
🪛 GitHub Check: PHP 8.4 + Doctrine ORM latest + Doctrine Lexer latest
src/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeType.php
[failure] 25-25:
Method MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType::getSQLDeclaration() should return string but returns mixed.
[failure] 25-25:
Access to undefined constant static(MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType<T of MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range>)::TYPE_NAME.
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseIntegerRange.php
[failure] 33-33:
Cannot cast mixed to string.
[failure] 14-14:
Class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseIntegerRange extends generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: T
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseTimestampRange.php
[failure] 34-34:
Cannot cast mixed to int.
[failure] 34-34:
Cannot call method format() on mixed.
[failure] 34-34:
Cannot call method format() on mixed.
[failure] 28-28:
Cannot call method getTimestamp() on mixed.
[failure] 28-28:
Cannot call method getTimestamp() on mixed.
[failure] 14-14:
Class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseTimestampRange extends generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: T
🪛 GitHub Check: PHP 8.3 + Doctrine ORM latest + Doctrine Lexer latest
src/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeType.php
[failure] 25-25:
Method MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType::getSQLDeclaration() should return string but returns mixed.
[failure] 25-25:
Access to undefined constant static(MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType<T of MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range>)::TYPE_NAME.
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseIntegerRange.php
[failure] 33-33:
Cannot cast mixed to string.
[failure] 14-14:
Class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseIntegerRange extends generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: T
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseTimestampRange.php
[failure] 34-34:
Cannot cast mixed to int.
[failure] 34-34:
Cannot call method format() on mixed.
[failure] 34-34:
Cannot call method format() on mixed.
[failure] 28-28:
Cannot call method getTimestamp() on mixed.
[failure] 28-28:
Cannot call method getTimestamp() on mixed.
[failure] 14-14:
Class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseTimestampRange extends generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: T
🪛 GitHub Check: PHP 8.3 + Doctrine ORM 3.0 + Doctrine Lexer latest
src/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeType.php
[failure] 25-25:
Method MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType::getSQLDeclaration() should return string but returns mixed.
[failure] 25-25:
Access to undefined constant static(MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType<T of MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range>)::TYPE_NAME.
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseIntegerRange.php
[failure] 33-33:
Cannot cast mixed to string.
[failure] 14-14:
Class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseIntegerRange extends generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: T
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseTimestampRange.php
[failure] 34-34:
Cannot cast mixed to int.
[failure] 34-34:
Cannot call method format() on mixed.
[failure] 34-34:
Cannot call method format() on mixed.
[failure] 28-28:
Cannot call method getTimestamp() on mixed.
[failure] 28-28:
Cannot call method getTimestamp() on mixed.
[failure] 14-14:
Class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseTimestampRange extends generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: T
🪛 GitHub Check: PHP 8.3 + Doctrine ORM latest + Doctrine Lexer 3.0
src/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeType.php
[failure] 25-25:
Method MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType::getSQLDeclaration() should return string but returns mixed.
[failure] 25-25:
Access to undefined constant static(MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType<T of MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range>)::TYPE_NAME.
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseIntegerRange.php
[failure] 33-33:
Cannot cast mixed to string.
[failure] 14-14:
Class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseIntegerRange extends generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: T
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseTimestampRange.php
[failure] 34-34:
Cannot cast mixed to int.
[failure] 34-34:
Cannot call method format() on mixed.
[failure] 34-34:
Cannot call method format() on mixed.
[failure] 28-28:
Cannot call method getTimestamp() on mixed.
[failure] 28-28:
Cannot call method getTimestamp() on mixed.
[failure] 14-14:
Class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseTimestampRange extends generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: T
🪛 GitHub Check: PHP 8.1 + Doctrine ORM 3.0 + Doctrine Lexer latest
src/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeType.php
[failure] 25-25:
Method MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType::getSQLDeclaration() should return string but returns mixed.
[failure] 25-25:
Access to undefined constant static(MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType<T of MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range>)::TYPE_NAME.
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseIntegerRange.php
[failure] 33-33:
Cannot cast mixed to string.
[failure] 14-14:
Class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseIntegerRange extends generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: T
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseTimestampRange.php
[failure] 34-34:
Cannot cast mixed to int.
[failure] 34-34:
Cannot call method format() on mixed.
[failure] 34-34:
Cannot call method format() on mixed.
[failure] 28-28:
Cannot call method getTimestamp() on mixed.
[failure] 28-28:
Cannot call method getTimestamp() on mixed.
[failure] 14-14:
Class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseTimestampRange extends generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: T
🪛 GitHub Check: PHP 8.3 + Doctrine ORM 3.0 + Doctrine Lexer 3.0
src/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeType.php
[failure] 25-25:
Method MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType::getSQLDeclaration() should return string but returns mixed.
[failure] 25-25:
Access to undefined constant static(MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType<T of MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range>)::TYPE_NAME.
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseIntegerRange.php
[failure] 33-33:
Cannot cast mixed to string.
[failure] 14-14:
Class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseIntegerRange extends generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: T
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseTimestampRange.php
[failure] 34-34:
Cannot cast mixed to int.
[failure] 34-34:
Cannot call method format() on mixed.
[failure] 34-34:
Cannot call method format() on mixed.
[failure] 28-28:
Cannot call method getTimestamp() on mixed.
[failure] 28-28:
Cannot call method getTimestamp() on mixed.
[failure] 14-14:
Class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseTimestampRange extends generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: T
🪛 GitHub Check: PHP 8.2 + Doctrine ORM latest + Doctrine Lexer latest
src/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeType.php
[failure] 25-25:
Method MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType::getSQLDeclaration() should return string but returns mixed.
[failure] 25-25:
Access to undefined constant static(MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType<T of MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range>)::TYPE_NAME.
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseIntegerRange.php
[failure] 33-33:
Cannot cast mixed to string.
[failure] 14-14:
Class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseIntegerRange extends generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: T
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseTimestampRange.php
[failure] 34-34:
Cannot cast mixed to int.
[failure] 34-34:
Cannot call method format() on mixed.
[failure] 34-34:
Cannot call method format() on mixed.
[failure] 28-28:
Cannot call method getTimestamp() on mixed.
[failure] 28-28:
Cannot call method getTimestamp() on mixed.
[failure] 14-14:
Class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseTimestampRange extends generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: T
🪛 GitHub Check: PHP 8.1 + Doctrine ORM latest + Doctrine Lexer latest
src/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeType.php
[failure] 25-25:
Method MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType::getSQLDeclaration() should return string but returns mixed.
[failure] 25-25:
Access to undefined constant static(MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType<T of MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range>)::TYPE_NAME.
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseIntegerRange.php
[failure] 33-33:
Cannot cast mixed to string.
[failure] 14-14:
Class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseIntegerRange extends generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: T
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseTimestampRange.php
[failure] 34-34:
Cannot cast mixed to int.
[failure] 34-34:
Cannot call method format() on mixed.
[failure] 34-34:
Cannot call method format() on mixed.
[failure] 28-28:
Cannot call method getTimestamp() on mixed.
[failure] 28-28:
Cannot call method getTimestamp() on mixed.
[failure] 14-14:
Class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseTimestampRange extends generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: T
🪛 GitHub Check: PHP 8.2 + Doctrine ORM 3.0 + Doctrine Lexer 3.0
src/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeType.php
[failure] 25-25:
Method MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType::getSQLDeclaration() should return string but returns mixed.
[failure] 25-25:
Access to undefined constant static(MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType<T of MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range>)::TYPE_NAME.
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseIntegerRange.php
[failure] 33-33:
Cannot cast mixed to string.
[failure] 14-14:
Class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseIntegerRange extends generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: T
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseTimestampRange.php
[failure] 34-34:
Cannot cast mixed to int.
[failure] 34-34:
Cannot call method format() on mixed.
[failure] 34-34:
Cannot call method format() on mixed.
[failure] 28-28:
Cannot call method getTimestamp() on mixed.
[failure] 28-28:
Cannot call method getTimestamp() on mixed.
[failure] 14-14:
Class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseTimestampRange extends generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: T
🪛 GitHub Check: PHP 8.2 + Doctrine ORM latest + Doctrine Lexer 3.0
src/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeType.php
[failure] 25-25:
Method MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType::getSQLDeclaration() should return string but returns mixed.
[failure] 25-25:
Access to undefined constant static(MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType<T of MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range>)::TYPE_NAME.
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseIntegerRange.php
[failure] 33-33:
Cannot cast mixed to string.
[failure] 14-14:
Class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseIntegerRange extends generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: T
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseTimestampRange.php
[failure] 34-34:
Cannot cast mixed to int.
[failure] 34-34:
Cannot call method format() on mixed.
[failure] 34-34:
Cannot call method format() on mixed.
[failure] 28-28:
Cannot call method getTimestamp() on mixed.
[failure] 28-28:
Cannot call method getTimestamp() on mixed.
[failure] 14-14:
Class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseTimestampRange extends generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: T
🪛 GitHub Check: PHP 8.2 + Doctrine ORM 3.0 + Doctrine Lexer latest
src/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeType.php
[failure] 25-25:
Method MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType::getSQLDeclaration() should return string but returns mixed.
[failure] 25-25:
Access to undefined constant static(MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType<T of MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range>)::TYPE_NAME.
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseIntegerRange.php
[failure] 33-33:
Cannot cast mixed to string.
[failure] 14-14:
Class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseIntegerRange extends generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: T
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseTimestampRange.php
[failure] 34-34:
Cannot cast mixed to int.
[failure] 34-34:
Cannot call method format() on mixed.
[failure] 34-34:
Cannot call method format() on mixed.
[failure] 28-28:
Cannot call method getTimestamp() on mixed.
[failure] 28-28:
Cannot call method getTimestamp() on mixed.
[failure] 14-14:
Class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseTimestampRange extends generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: T
🪛 GitHub Check: PHP 8.1 + Doctrine ORM 3.0 + Doctrine Lexer 3.0
src/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeType.php
[failure] 25-25:
Method MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType::getSQLDeclaration() should return string but returns mixed.
[failure] 25-25:
Access to undefined constant static(MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType<T of MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range>)::TYPE_NAME.
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseIntegerRange.php
[failure] 33-33:
Cannot cast mixed to string.
[failure] 14-14:
Class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseIntegerRange extends generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: T
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseTimestampRange.php
[failure] 34-34:
Cannot cast mixed to int.
[failure] 34-34:
Cannot call method format() on mixed.
[failure] 34-34:
Cannot call method format() on mixed.
[failure] 28-28:
Cannot call method getTimestamp() on mixed.
[failure] 28-28:
Cannot call method getTimestamp() on mixed.
[failure] 14-14:
Class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseTimestampRange extends generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: T
🪛 GitHub Check: PHP 8.1 + Doctrine ORM latest + Doctrine Lexer 3.0
src/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeType.php
[failure] 25-25:
Method MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType::getSQLDeclaration() should return string but returns mixed.
[failure] 25-25:
Access to undefined constant static(MartinGeorgiev\Doctrine\DBAL\Types\BaseRangeType<T of MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range>)::TYPE_NAME.
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseIntegerRange.php
[failure] 33-33:
Cannot cast mixed to string.
[failure] 14-14:
Class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseIntegerRange extends generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: T
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseTimestampRange.php
[failure] 34-34:
Cannot cast mixed to int.
[failure] 34-34:
Cannot call method format() on mixed.
[failure] 34-34:
Cannot call method format() on mixed.
[failure] 28-28:
Cannot call method getTimestamp() on mixed.
[failure] 28-28:
Cannot call method getTimestamp() on mixed.
[failure] 14-14:
Class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseTimestampRange extends generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: T
🔇 Additional comments (47)
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/Int8Range.php (1)
14-14
: LGTM! Clean value object implementation.The minimal implementation correctly leverages the
BaseIntegerRange
base class and serves as a properly typed container for PostgreSQL INT8RANGE values. Thefinal
keyword appropriately prevents inheritance for this value object.tests/Integration/MartinGeorgiev/TestCase.php (2)
20-20
: LGTM! Proper integration of new range types.The import statements for the new range types are correctly added and follow the established alphabetical ordering pattern.
Also applies to: 24-25, 31-31, 37-38
169-169
: LGTM! Consistent type registration.The new range types are properly registered in the
$typesMap
array with their correct PostgreSQL type names. This follows the established pattern and enables the types for integration testing.Also applies to: 173-174, 180-180, 186-187
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/TstzRange.php (1)
16-24
: LGTM! Proper timestamp with timezone formatting.The implementation correctly validates that values implement
DateTimeInterface
and formats them using the appropriate pattern'Y-m-d H:i:s.uP'
which includes microseconds and timezone offset. This aligns with PostgreSQL's TSTZRANGE format requirements.src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/Int4Range.php (1)
14-41
: Well-implemented INT4 range validation!The implementation correctly validates 32-bit integer bounds and provides clear error messages. The constants accurately represent the INT4 range limits.
src/MartinGeorgiev/Doctrine/DBAL/Types/Exceptions/InvalidRangeForDatabaseException.php (1)
14-32
: Clean exception design with helpful error messages!The static factory methods provide clear context for different error scenarios, and using
get_debug_type()
ensures detailed type information in error messages.src/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeType.php (1)
56-58
: Verify empty string handling behavior.The method returns
null
for empty strings. Please confirm this is the intended behavior for PostgreSQL range types, as it differs from the error handling for other invalid formats.src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseIntegerRange.php (1)
36-46
: Excellent integer validation logic!The
parseValue
method's validation by comparing the string representation of the parsed integer with the original string is a robust way to catch invalid inputs like "123.45" or "123abc".src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseTimestampRange.php (1)
26-35
: Excellent handling of timestamp microsecond precision!The implementation correctly handles the limitation of
getTimestamp()
by separately comparing microseconds. The explanatory comment is helpful for future maintainers.tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/Int4RangeTest.php (1)
14-116
: Comprehensive test coverage!The test suite thoroughly covers all aspects of the Int4Range value object including edge cases, bounds validation, and data-driven testing with good scenarios.
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/TstzRangeTest.php (1)
14-139
: Excellent timezone and microseconds handling tests!The test suite properly validates timezone preservation and microseconds precision, which are critical for PostgreSQL tstzrange compatibility.
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/TstzRangeTest.php (1)
26-106
: Well-structured DBAL type tests!The tests properly validate SQL declaration and bidirectional conversions, including proper handling of PostgreSQL's special 'empty' range string.
tests/Integration/MartinGeorgiev/Doctrine/DBAL/Types/DBALTypesTest.php (1)
107-126
: Good integration test coverage for all range types!The test cases cover all six PostgreSQL range types with appropriate scenarios including empty and infinite ranges.
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/TsRangeTest.php (2)
68-88
: LGTM! Comprehensive test data coverage.The data providers cover essential test scenarios including simple ranges, hour ranges, and empty ranges. The microsecond precision formatting for timestamps is correctly implemented.
105-113
: LGTM! Proper PostgreSQL empty range handling.The dedicated test for PostgreSQL's 'empty' range string correctly verifies the conversion to an empty TsRangeValueObject and validates both the string representation and emptiness state.
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/DateRangeTest.php (1)
68-86
: LGTM! Excellent use of factory methods.The data provider demonstrates good coverage with practical examples including the convenient
year()
andsingleDay()
factory methods, which enhance the usability of the DateRange value object.src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/NumericRange.php (3)
25-35
: LGTM! Proper numeric validation.The constructor correctly validates that bounds are numeric using
is_numeric()
, which appropriately handles integers, floats, and numeric strings. The error messages are descriptive and helpful for debugging.
54-66
: LGTM! Excellent type preservation implementation.The
parseValue
method correctly preserves the original numeric type by returning integers when the float value equals its integer representation, and floats otherwise. This aligns perfectly with the project's goal of preserving type information during transformations between PostgreSQL and PHP.
40-43
: LGTM! Correct numeric comparison implementation.Using float casting for comparison ensures consistent ordering behavior across all numeric types while maintaining precision for the comparison operation.
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/NumRangeTest.php (2)
68-74
: LGTM! Excellent edge case coverage.The additional test for empty string input demonstrates thorough consideration of edge cases and aligns with the BaseRangeType implementation that treats empty strings as null.
76-102
: LGTM! Comprehensive numeric range test coverage.The data provider covers excellent scenarios including mixed integer and float values, all boundary types (inclusive/exclusive), infinite bounds, and empty ranges. This thoroughly validates the NumericRange functionality.
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/Int8RangeTest.php (3)
50-57
: LGTM! Excellent edge case testing with large values.Testing with
PHP_INT_MIN
andPHP_INT_MAX
ensures the Int8Range properly handles the full range of 64-bit integers, which is crucial for PostgreSQL int8range compatibility.
76-89
: LGTM! Comprehensive contains method test coverage.The data provider covers all essential boundary conditions including values inside the range, boundary values respecting inclusivity/exclusivity, values outside the range, null handling, and empty range behavior.
91-100
: LGTM! Thorough string parsing test coverage.The fromString test cases cover all PostgreSQL range string formats including different bracket types, infinite bounds, empty ranges, and large values. This ensures robust parsing capability for all valid PostgreSQL int8range representations.
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/Int4RangeTest.php (1)
26-32
: LGTM! Well-structured SQL declaration test.The test correctly verifies that the Int4Range type returns the expected PostgreSQL type name.
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/NumericRangeTest.php (3)
58-71
: Excellent comprehensive testing of the contains method.The data provider covers all important scenarios including boundary conditions, null values, and empty ranges. The use of
mixed
type for the value parameter follows the project's established patterns for database-to-PHP conversion testing.
83-99
: Well-implemented exception testing for invalid bounds.The tests properly validate that invalid numeric bounds throw appropriate exceptions with descriptive messages. This ensures robust input validation.
73-81
: Good coverage of string parsing scenarios.The
providesFromStringTestCases
data provider covers various range formats including infinite bounds and empty ranges, ensuring robust parsing functionality.tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/TsRangeTest.php (3)
83-90
: Excellent attention to microseconds precision.This test ensures that the TsRange properly handles microsecond precision in timestamps, which is crucial for accurate timestamp range operations. This demonstrates thorough consideration of PostgreSQL timestamp behavior.
92-108
: Comprehensive contains method testing with proper boundary handling.The data provider covers all critical scenarios including boundary conditions (inclusive lower, exclusive upper), null values, and empty ranges. The use of
mixed
type follows project conventions.
110-129
: Well-structured string parsing test coverage.The
providesFromStringTestCases
covers various timestamp range formats including inclusive ranges, infinite bounds, and empty ranges, ensuring robust parsing functionality.src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/DateRange.php (4)
25-35
: Excellent input validation with descriptive error messages.The constructor properly validates that both bounds are DateTimeInterface instances and provides clear, informative error messages using
gettype()
to show the actual type received.
40-43
: Efficient date comparison implementation.Using timestamp comparison with the spaceship operator is an efficient and reliable way to compare dates, handling timezone considerations properly.
54-65
: Robust error handling in parseValue method.The method properly catches exceptions during date parsing and re-throws them with enhanced context including the original error message. This provides excellent debugging information while maintaining the expected exception type.
67-89
: Well-designed factory methods for common use cases.The static factory methods (
singleDay
,year
,month
) provide convenient ways to create common date ranges. The consistent use of inclusive lower and exclusive upper bounds follows PostgreSQL range conventions.tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/DateRangeTest.php (12)
1-11
: LGTM - Clean imports and namespace setupThe file header, imports, and namespace follow the expected conventions for this project. The use of PHPUnit\Framework\TestCase is appropriate for unit tests in this namespace.
14-23
: Well-structured basic range creation testThe test correctly validates DateRange creation with start and end dates, verifying both string representation and emptiness state. The expected string format
[2023-01-01,2023-12-31)
properly represents PostgreSQL's daterange format with left-inclusive, right-exclusive bounds.
25-32
: Proper empty range testingThe test correctly validates the empty range factory method and its expected behavior.
34-41
: Infinite range test validates PostgreSQL formatThe test correctly validates the infinite range factory method with the expected
(,)
string representation for PostgreSQL's infinite daterange format.
43-51
: Single day range logic is correctThe test validates that a single day range correctly spans from the given date to the next day (exclusive), which is the expected behavior for date ranges.
53-60
: Year range spans correctlyThe test validates that a year range correctly spans from January 1st to January 1st of the next year (exclusive).
62-69
: Month range spans correctlyThe test validates that a month range correctly spans from the first day of the month to the first day of the next month (exclusive).
71-76
: Contains method test follows project patternsThe test method correctly uses the
mixed
type for the value parameter, which aligns with the project's pattern for database-to-PHP conversion tests as mentioned in the learnings.
78-86
: String parsing test validates both representation and stateThe test properly validates both the string representation and the isEmpty state when parsing from string, ensuring comprehensive validation of the parsing functionality.
88-104
: Exception tests validate proper error handlingThe exception tests correctly validate that invalid constructor arguments throw appropriate
InvalidArgumentException
with descriptive messages.
106-122
: Comprehensive contains test coverageThe data provider covers all the essential scenarios for the contains method:
- Date within range
- Lower bound inclusion
- Upper bound exclusion
- Dates before/after range
- Null handling
- Empty range behavior
This provides excellent test coverage for the contains functionality.
124-143
: Thorough string parsing test casesThe data provider covers comprehensive parsing scenarios including:
- Simple ranges with default bounds
- Inclusive ranges with explicit bounds
- Infinite lower/upper bounds
- Empty ranges
This provides excellent coverage for the string parsing functionality.
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/Int8RangeTest.php
Outdated
Show resolved
Hide resolved
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/Int8RangeTest.php
Outdated
Show resolved
Hide resolved
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/Int8RangeTest.php
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (7)
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeTestCase.php
(1 hunks)tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/DateRangeTest.php
(1 hunks)tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/Int4RangeTest.php
(1 hunks)tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/Int8RangeTest.php
(1 hunks)tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/NumRangeTest.php
(1 hunks)tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/TsRangeTest.php
(1 hunks)tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/TstzRangeTest.php
(1 hunks)
✅ Files skipped from review due to trivial changes (1)
- tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/NumRangeTest.php
🚧 Files skipped from review as they are similar to previous changes (4)
- tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/TsRangeTest.php
- tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/DateRangeTest.php
- tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/TstzRangeTest.php
- tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/Int4RangeTest.php
🧰 Additional context used
🧠 Learnings (3)
📓 Common learnings
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#263
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/Numrange.php:19-21
Timestamp: 2025-03-11T12:32:10.726Z
Learning: In the postgresql-for-doctrine repository, PostgreSQL range functions have distinct implementations for different data types. The `Numrange` function works with numeric/decimal values and is tested using the `ContainsDecimals` fixture with properties typed as `float`. In contrast, the `Int4range` function works with 32-bit integers and is tested using the `ContainsIntegers` fixture with properties typed as `int`. While the PHP implementations share a similar structure (extending `BaseFunction`), they are semantically different as they handle different PostgreSQL data types.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#0
File: :0-0
Timestamp: 2025-03-26T02:46:12.804Z
Learning: The PR "preserve the type of floats and integers when transforming back and forth between PostgreSQL and PHP" improves type handling by ensuring that integers remain integers, floats remain floats, numeric strings stay as strings, and booleans are properly converted through the transformation process.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#352
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpInstrTest.php:1-67
Timestamp: 2025-04-20T11:24:18.300Z
Learning: This PostgreSQL-for-Doctrine project is a translation layer only, focusing on correctly converting Doctrine DQL to PostgreSQL SQL syntax. It ensures arguments are passed in the expected format but does not test or handle PostgreSQL's actual function behavior or data handling. Test cases should focus on DQL-to-SQL translation and argument validation, not on PostgreSQL-specific behaviors.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#340
File: tests/MartinGeorgiev/Doctrine/DBAL/Types/InetArrayTest.php:145-145
Timestamp: 2025-04-11T11:23:44.192Z
Learning: In the PostgreSQL for Doctrine test cases, methods that test database-to-PHP conversions should use `mixed` type for parameter and include non-string test cases in their data providers, following the pattern in classes like InetTest, CidrTest, and MacaddrTest.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#357
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpMatchTest.php:28-62
Timestamp: 2025-04-22T00:03:37.733Z
Learning: This project focuses on providing Doctrine ORM interfaces to PostgreSQL functions. Tests should validate correct DQL-to-SQL translation rather than PostgreSQL functionality itself. Test cases should focus on parameter passing and SQL generation, not on testing specific PostgreSQL regex pattern behaviors.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#350
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/BaseVariadicFunction.php:78-88
Timestamp: 2025-04-18T10:33:52.412Z
Learning: In SQL generation code for the postgresql-for-doctrine library, it's better to fail explicitly with clear errors than to use fallback behavior that makes assumptions about node types, as this could lead to functional bugs or security issues.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#0
File: :0-0
Timestamp: 2025-03-11T17:02:51.971Z
Learning: The PostgreSQL-for-doctrine library implements the JSON array element existence check using the `RIGHT_EXISTS_ON_LEFT` DQL function, which maps to PostgreSQL's `?` operator. This is used for checking if a specific value exists in a JSONB array column.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#277
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonValueTest.php:19-35
Timestamp: 2025-03-13T15:00:16.619Z
Learning: The JsonValue implementation in postgres-for-doctrine has documented limitations: it does not support RETURNING type, DEFAULT clause, ON ERROR clause, ON EMPTY clause, and other advanced PostgreSQL JSON_VALUE features due to DQL limitations.
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/Int8RangeTest.php (12)
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#263
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/Numrange.php:19-21
Timestamp: 2025-03-11T12:32:10.726Z
Learning: In the postgresql-for-doctrine repository, PostgreSQL range functions have distinct implementations for different data types. The `Numrange` function works with numeric/decimal values and is tested using the `ContainsDecimals` fixture with properties typed as `float`. In contrast, the `Int4range` function works with 32-bit integers and is tested using the `ContainsIntegers` fixture with properties typed as `int`. While the PHP implementations share a similar structure (extending `BaseFunction`), they are semantically different as they handle different PostgreSQL data types.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#340
File: tests/MartinGeorgiev/Doctrine/DBAL/Types/InetArrayTest.php:145-145
Timestamp: 2025-04-11T11:23:44.192Z
Learning: In the PostgreSQL for Doctrine test cases, methods that test database-to-PHP conversions should use `mixed` type for parameter and include non-string test cases in their data providers, following the pattern in classes like InetTest, CidrTest, and MacaddrTest.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#383
File: tests/Unit/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RadiansTest.php:1-9
Timestamp: 2025-05-23T11:11:57.951Z
Learning: Tests in the `Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase directly, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), not PHPUnit's TestCase, and therefore don't need an explicit import statement.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#357
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpMatchTest.php:28-62
Timestamp: 2025-04-22T00:03:37.733Z
Learning: This project focuses on providing Doctrine ORM interfaces to PostgreSQL functions. Tests should validate correct DQL-to-SQL translation rather than PostgreSQL functionality itself. Test cases should focus on parameter passing and SQL generation, not on testing specific PostgreSQL regex pattern behaviors.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#0
File: :0-0
Timestamp: 2025-03-26T02:46:12.804Z
Learning: The PR "preserve the type of floats and integers when transforming back and forth between PostgreSQL and PHP" improves type handling by ensuring that integers remain integers, floats remain floats, numeric strings stay as strings, and booleans are properly converted through the transformation process.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#352
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpInstrTest.php:1-67
Timestamp: 2025-04-20T11:24:18.300Z
Learning: This PostgreSQL-for-Doctrine project is a translation layer only, focusing on correctly converting Doctrine DQL to PostgreSQL SQL syntax. It ensures arguments are passed in the expected format but does not test or handle PostgreSQL's actual function behavior or data handling. Test cases should focus on DQL-to-SQL translation and argument validation, not on PostgreSQL-specific behaviors.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#0
File: :0-0
Timestamp: 2025-04-17T12:29:38.149Z
Learning: All new features in this repository must include proper test coverage before approval.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#350
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/BaseVariadicFunction.php:78-88
Timestamp: 2025-04-18T10:33:52.412Z
Learning: In SQL generation code for the postgresql-for-doctrine library, it's better to fail explicitly with clear errors than to use fallback behavior that makes assumptions about node types, as this could lead to functional bugs or security issues.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#309
File: tests/MartinGeorgiev/Doctrine/DBAL/Types/BaseTypeTest.php:0-0
Timestamp: 2025-03-26T23:51:33.709Z
Learning: The requiresSQLCommentHint() method is intentionally kept in tests to support backwards compatibility with older Doctrine DBAL versions, even though it's deprecated in newer versions and triggers static analysis warnings. The method isn't used in production code.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#0
File: :0-0
Timestamp: 2025-04-23T20:20:39.026Z
Learning: In this project, unit tests should avoid using reflection (ReflectionMethod) to test protected methods directly, and instead use fixtures to test through public interfaces, even if it means slightly lower test coverage.
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeTestCase.php (8)
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#263
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/Numrange.php:19-21
Timestamp: 2025-03-11T12:32:10.726Z
Learning: In the postgresql-for-doctrine repository, PostgreSQL range functions have distinct implementations for different data types. The `Numrange` function works with numeric/decimal values and is tested using the `ContainsDecimals` fixture with properties typed as `float`. In contrast, the `Int4range` function works with 32-bit integers and is tested using the `ContainsIntegers` fixture with properties typed as `int`. While the PHP implementations share a similar structure (extending `BaseFunction`), they are semantically different as they handle different PostgreSQL data types.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#383
File: tests/Unit/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RadiansTest.php:1-9
Timestamp: 2025-05-23T11:11:57.951Z
Learning: Tests in the `Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase directly, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), not PHPUnit's TestCase, and therefore don't need an explicit import statement.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#340
File: tests/MartinGeorgiev/Doctrine/DBAL/Types/InetArrayTest.php:145-145
Timestamp: 2025-04-11T11:23:44.192Z
Learning: In the PostgreSQL for Doctrine test cases, methods that test database-to-PHP conversions should use `mixed` type for parameter and include non-string test cases in their data providers, following the pattern in classes like InetTest, CidrTest, and MacaddrTest.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#357
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpMatchTest.php:28-62
Timestamp: 2025-04-22T00:03:37.733Z
Learning: This project focuses on providing Doctrine ORM interfaces to PostgreSQL functions. Tests should validate correct DQL-to-SQL translation rather than PostgreSQL functionality itself. Test cases should focus on parameter passing and SQL generation, not on testing specific PostgreSQL regex pattern behaviors.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#0
File: :0-0
Timestamp: 2025-04-23T20:20:39.026Z
Learning: In this project, unit tests should avoid using reflection (ReflectionMethod) to test protected methods directly, and instead use fixtures to test through public interfaces, even if it means slightly lower test coverage.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#352
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpInstrTest.php:1-67
Timestamp: 2025-04-20T11:24:18.300Z
Learning: This PostgreSQL-for-Doctrine project is a translation layer only, focusing on correctly converting Doctrine DQL to PostgreSQL SQL syntax. It ensures arguments are passed in the expected format but does not test or handle PostgreSQL's actual function behavior or data handling. Test cases should focus on DQL-to-SQL translation and argument validation, not on PostgreSQL-specific behaviors.
🧬 Code Graph Analysis (1)
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeTestCase.php (4)
src/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeType.php (3)
BaseRangeType
(21-66)convertToDatabaseValue
(23-34)convertToPHPValue
(41-60)src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/Range.php (3)
Range
(16-145)__toString
(36-49)isEmpty
(56-72)tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/NumRangeTest.php (5)
createRangeType
(12-15)getExpectedTypeName
(17-20)getExpectedValueObjectClass
(27-30)provideValidTransformations
(32-62)getExpectedSqlDeclaration
(22-25)src/MartinGeorgiev/Doctrine/DBAL/Types/BaseType.php (1)
getName
(31-36)
⏰ Context from checks skipped due to timeout of 90000ms (1)
- GitHub Check: PHP 8.4 + Doctrine ORM latest + Doctrine Lexer latest
🔇 Additional comments (3)
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/Int8RangeTest.php (1)
1-67
: LGTM! Comprehensive test coverage for Int8Range type.The test class properly implements the required abstract methods and provides comprehensive test coverage with 7 different scenarios in the data provider, including edge cases like infinite bounds, max bounds, empty ranges, and null values. The implementation follows the established pattern for range type testing.
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeTestCase.php (2)
16-29
: Well-structured abstract test base class.The class provides a solid foundation for testing range types with proper mock setup and fixture initialization. The design follows good testing practices.
31-83
: Comprehensive test coverage for range type functionality.The test methods cover all essential aspects of range type behavior: type naming, bidirectional conversion between PHP and database values, null handling, and PostgreSQL's special 'empty' range string. The data provider pattern is used effectively for testing multiple scenarios.
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeTestCase.php
Outdated
Show resolved
Hide resolved
… with complex annotations that don't provide real value
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 4
🧹 Nitpick comments (5)
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeTestCase.php (1)
130-131
: Consider adding test for malformed range stringsWhile you test invalid format with
{1,2}
, consider adding more edge cases like unclosed brackets[1,2
, missing commas[1 2)
, or extra spaces.Add more test cases:
$this->fixture->convertToPHPValue('{1,2}', $this->platform); + +// Additional test methods for edge cases: +#[Test] +public function throws_exception_for_unclosed_bracket(): void +{ + $this->expectException(InvalidRangeForPHPException::class); + $this->fixture->convertToPHPValue('[1,2', $this->platform); +} + +#[Test] +public function throws_exception_for_missing_comma(): void +{ + $this->expectException(InvalidRangeForPHPException::class); + $this->fixture->convertToPHPValue('[1 2)', $this->platform); +}tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseTimestampRangeTestCase.php (1)
102-103
: Good test for microsecond precisionThe microsecond precision test is essential for timestamp ranges. Consider documenting that PostgreSQL timestamp types support microsecond precision (6 decimal places).
Add a comment explaining PostgreSQL's microsecond support:
#[Test] public function can_handle_microsecond_precision(): void { + // PostgreSQL timestamp types support microsecond precision (6 decimal places) $earlier = $this->createTimeWithMicroseconds('2023-01-01 10:00:00.123456');
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/TsRangeTest.php (3)
105-125
: Remove unused test method.The method
getBoundaryTestCases()
is not used anywhere in this test class and doesn't appear to be an abstract method requirement from the parent class.Either remove this unused method or refactor it into a proper test method with a data provider:
- protected function getBoundaryTestCases(): array - { - return [ - 'contains lower bound (inclusive)' => [ - 'value' => new \DateTimeImmutable('2023-01-01 10:00:00'), - 'expected' => true, - ], - 'does not contain value before range' => [ - 'value' => new \DateTimeImmutable('2023-01-01 09:00:00'), - 'expected' => false, - ], - 'does not contain upper bound (exclusive)' => [ - 'value' => new \DateTimeImmutable('2023-01-01 18:00:00'), - 'expected' => false, - ], - 'contains value in middle' => [ - 'value' => new \DateTimeImmutable('2023-01-01 14:00:00'), - 'expected' => true, - ], - ]; - }
127-163
: Remove or utilize unused test cases.The method
getComparisonTestCases()
contains valuable test cases for empty range scenarios but is not used anywhere in the test class.Either remove this method or create a test that uses these cases:
+ #[Test] + #[DataProvider('getComparisonTestCases')] + public function test_empty_range_scenarios(TsRange $range, bool $expectedEmpty): void + { + self::assertEquals($expectedEmpty, $range->isEmpty()); + } + - protected function getComparisonTestCases(): array + public static function getComparisonTestCases(): array { return [ 'reverse range should be empty' => [ - 'range' => new TsRange( + new TsRange( new \DateTimeImmutable('2023-01-01 18:00:00'), new \DateTimeImmutable('2023-01-01 10:00:00') ), - 'expectedEmpty' => true, + true, ], // ... rest of the cases ]; }
249-258
: Remove duplicate microseconds test.This test
can_handle_microseconds_in_formatting()
is functionally identical to the earlier testhandles_microseconds_correctly()
(lines 218-226). Both create a TsRange with microseconds and verify the string representation.Remove this duplicate test:
- #[Test] - public function can_handle_microseconds_in_formatting(): void - { - $tsRange = new TsRange( - new \DateTimeImmutable('2023-01-01 10:00:00.123456'), - new \DateTimeImmutable('2023-01-01 18:00:00.654321') - ); - - self::assertEquals('[2023-01-01 10:00:00.123456,2023-01-01 18:00:00.654321)', (string) $tsRange); - }
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (9)
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeTestCase.php
(1 hunks)tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseRangeTestCase.php
(1 hunks)tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseTimestampRangeTestCase.php
(1 hunks)tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/DateRangeTest.php
(1 hunks)tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/Int4RangeTest.php
(1 hunks)tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/Int8RangeTest.php
(1 hunks)tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/NumericRangeTest.php
(1 hunks)tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/TsRangeTest.php
(1 hunks)tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/TstzRangeTest.php
(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
- tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/Int4RangeTest.php
- tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/Int8RangeTest.php
🧰 Additional context used
🧠 Learnings (8)
📓 Common learnings
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#263
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/Numrange.php:19-21
Timestamp: 2025-03-11T12:32:10.726Z
Learning: In the postgresql-for-doctrine repository, PostgreSQL range functions have distinct implementations for different data types. The `Numrange` function works with numeric/decimal values and is tested using the `ContainsDecimals` fixture with properties typed as `float`. In contrast, the `Int4range` function works with 32-bit integers and is tested using the `ContainsIntegers` fixture with properties typed as `int`. While the PHP implementations share a similar structure (extending `BaseFunction`), they are semantically different as they handle different PostgreSQL data types.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#0
File: :0-0
Timestamp: 2025-04-17T12:29:38.149Z
Learning: All new features in this repository must include proper test coverage before approval.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#0
File: :0-0
Timestamp: 2025-03-26T02:46:12.804Z
Learning: The PR "preserve the type of floats and integers when transforming back and forth between PostgreSQL and PHP" improves type handling by ensuring that integers remain integers, floats remain floats, numeric strings stay as strings, and booleans are properly converted through the transformation process.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#352
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpInstrTest.php:1-67
Timestamp: 2025-04-20T11:24:18.300Z
Learning: This PostgreSQL-for-Doctrine project is a translation layer only, focusing on correctly converting Doctrine DQL to PostgreSQL SQL syntax. It ensures arguments are passed in the expected format but does not test or handle PostgreSQL's actual function behavior or data handling. Test cases should focus on DQL-to-SQL translation and argument validation, not on PostgreSQL-specific behaviors.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#340
File: tests/MartinGeorgiev/Doctrine/DBAL/Types/InetArrayTest.php:145-145
Timestamp: 2025-04-11T11:23:44.192Z
Learning: In the PostgreSQL for Doctrine test cases, methods that test database-to-PHP conversions should use `mixed` type for parameter and include non-string test cases in their data providers, following the pattern in classes like InetTest, CidrTest, and MacaddrTest.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#357
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpMatchTest.php:28-62
Timestamp: 2025-04-22T00:03:37.733Z
Learning: This project focuses on providing Doctrine ORM interfaces to PostgreSQL functions. Tests should validate correct DQL-to-SQL translation rather than PostgreSQL functionality itself. Test cases should focus on parameter passing and SQL generation, not on testing specific PostgreSQL regex pattern behaviors.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#350
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/BaseVariadicFunction.php:78-88
Timestamp: 2025-04-18T10:33:52.412Z
Learning: In SQL generation code for the postgresql-for-doctrine library, it's better to fail explicitly with clear errors than to use fallback behavior that makes assumptions about node types, as this could lead to functional bugs or security issues.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#0
File: :0-0
Timestamp: 2025-03-11T17:02:51.971Z
Learning: The PostgreSQL-for-doctrine library implements the JSON array element existence check using the `RIGHT_EXISTS_ON_LEFT` DQL function, which maps to PostgreSQL's `?` operator. This is used for checking if a specific value exists in a JSONB array column.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#277
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonValueTest.php:19-35
Timestamp: 2025-03-13T15:00:16.619Z
Learning: The JsonValue implementation in postgres-for-doctrine has documented limitations: it does not support RETURNING type, DEFAULT clause, ON ERROR clause, ON EMPTY clause, and other advanced PostgreSQL JSON_VALUE features due to DQL limitations.
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeTestCase.php (8)
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#263
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/Numrange.php:19-21
Timestamp: 2025-03-11T12:32:10.726Z
Learning: In the postgresql-for-doctrine repository, PostgreSQL range functions have distinct implementations for different data types. The `Numrange` function works with numeric/decimal values and is tested using the `ContainsDecimals` fixture with properties typed as `float`. In contrast, the `Int4range` function works with 32-bit integers and is tested using the `ContainsIntegers` fixture with properties typed as `int`. While the PHP implementations share a similar structure (extending `BaseFunction`), they are semantically different as they handle different PostgreSQL data types.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#383
File: tests/Unit/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RadiansTest.php:1-9
Timestamp: 2025-05-23T11:11:57.951Z
Learning: Tests in the `Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase directly, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), not PHPUnit's TestCase, and therefore don't need an explicit import statement.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#340
File: tests/MartinGeorgiev/Doctrine/DBAL/Types/InetArrayTest.php:145-145
Timestamp: 2025-04-11T11:23:44.192Z
Learning: In the PostgreSQL for Doctrine test cases, methods that test database-to-PHP conversions should use `mixed` type for parameter and include non-string test cases in their data providers, following the pattern in classes like InetTest, CidrTest, and MacaddrTest.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#357
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpMatchTest.php:28-62
Timestamp: 2025-04-22T00:03:37.733Z
Learning: This project focuses on providing Doctrine ORM interfaces to PostgreSQL functions. Tests should validate correct DQL-to-SQL translation rather than PostgreSQL functionality itself. Test cases should focus on parameter passing and SQL generation, not on testing specific PostgreSQL regex pattern behaviors.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#0
File: :0-0
Timestamp: 2025-04-23T20:20:39.026Z
Learning: In this project, unit tests should avoid using reflection (ReflectionMethod) to test protected methods directly, and instead use fixtures to test through public interfaces, even if it means slightly lower test coverage.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#352
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpInstrTest.php:1-67
Timestamp: 2025-04-20T11:24:18.300Z
Learning: This PostgreSQL-for-Doctrine project is a translation layer only, focusing on correctly converting Doctrine DQL to PostgreSQL SQL syntax. It ensures arguments are passed in the expected format but does not test or handle PostgreSQL's actual function behavior or data handling. Test cases should focus on DQL-to-SQL translation and argument validation, not on PostgreSQL-specific behaviors.
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/TstzRangeTest.php (7)
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#263
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/Numrange.php:19-21
Timestamp: 2025-03-11T12:32:10.726Z
Learning: In the postgresql-for-doctrine repository, PostgreSQL range functions have distinct implementations for different data types. The `Numrange` function works with numeric/decimal values and is tested using the `ContainsDecimals` fixture with properties typed as `float`. In contrast, the `Int4range` function works with 32-bit integers and is tested using the `ContainsIntegers` fixture with properties typed as `int`. While the PHP implementations share a similar structure (extending `BaseFunction`), they are semantically different as they handle different PostgreSQL data types.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#383
File: tests/Unit/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RadiansTest.php:1-9
Timestamp: 2025-05-23T11:11:57.951Z
Learning: Tests in the `Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase directly, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), not PHPUnit's TestCase, and therefore don't need an explicit import statement.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#340
File: tests/MartinGeorgiev/Doctrine/DBAL/Types/InetArrayTest.php:145-145
Timestamp: 2025-04-11T11:23:44.192Z
Learning: In the PostgreSQL for Doctrine test cases, methods that test database-to-PHP conversions should use `mixed` type for parameter and include non-string test cases in their data providers, following the pattern in classes like InetTest, CidrTest, and MacaddrTest.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#357
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpMatchTest.php:28-62
Timestamp: 2025-04-22T00:03:37.733Z
Learning: This project focuses on providing Doctrine ORM interfaces to PostgreSQL functions. Tests should validate correct DQL-to-SQL translation rather than PostgreSQL functionality itself. Test cases should focus on parameter passing and SQL generation, not on testing specific PostgreSQL regex pattern behaviors.
Learnt from: karpilin
PR: martin-georgiev/postgresql-for-doctrine#386
File: tests/Integration/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ToTimestampTest.php:34-39
Timestamp: 2025-05-27T16:10:35.054Z
Learning: PostgreSQL's to_timestamp function returns a fallback result (like '2005-01-01 00:00:00+00') when given an invalid format string, rather than throwing an exception. This behavior is different from some other formatting functions and should be tested accordingly.
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseTimestampRangeTestCase.php (5)
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#383
File: tests/Unit/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RadiansTest.php:1-9
Timestamp: 2025-05-23T11:11:57.951Z
Learning: Tests in the `Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase directly, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), not PHPUnit's TestCase, and therefore don't need an explicit import statement.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#263
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/Numrange.php:19-21
Timestamp: 2025-03-11T12:32:10.726Z
Learning: In the postgresql-for-doctrine repository, PostgreSQL range functions have distinct implementations for different data types. The `Numrange` function works with numeric/decimal values and is tested using the `ContainsDecimals` fixture with properties typed as `float`. In contrast, the `Int4range` function works with 32-bit integers and is tested using the `ContainsIntegers` fixture with properties typed as `int`. While the PHP implementations share a similar structure (extending `BaseFunction`), they are semantically different as they handle different PostgreSQL data types.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#340
File: tests/MartinGeorgiev/Doctrine/DBAL/Types/InetArrayTest.php:145-145
Timestamp: 2025-04-11T11:23:44.192Z
Learning: In the PostgreSQL for Doctrine test cases, methods that test database-to-PHP conversions should use `mixed` type for parameter and include non-string test cases in their data providers, following the pattern in classes like InetTest, CidrTest, and MacaddrTest.
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/NumericRangeTest.php (5)
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#263
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/Numrange.php:19-21
Timestamp: 2025-03-11T12:32:10.726Z
Learning: In the postgresql-for-doctrine repository, PostgreSQL range functions have distinct implementations for different data types. The `Numrange` function works with numeric/decimal values and is tested using the `ContainsDecimals` fixture with properties typed as `float`. In contrast, the `Int4range` function works with 32-bit integers and is tested using the `ContainsIntegers` fixture with properties typed as `int`. While the PHP implementations share a similar structure (extending `BaseFunction`), they are semantically different as they handle different PostgreSQL data types.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#340
File: tests/MartinGeorgiev/Doctrine/DBAL/Types/InetArrayTest.php:145-145
Timestamp: 2025-04-11T11:23:44.192Z
Learning: In the PostgreSQL for Doctrine test cases, methods that test database-to-PHP conversions should use `mixed` type for parameter and include non-string test cases in their data providers, following the pattern in classes like InetTest, CidrTest, and MacaddrTest.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#383
File: tests/Unit/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RadiansTest.php:1-9
Timestamp: 2025-05-23T11:11:57.951Z
Learning: Tests in the `Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase directly, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), not PHPUnit's TestCase, and therefore don't need an explicit import statement.
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/TsRangeTest.php (6)
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#263
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/Numrange.php:19-21
Timestamp: 2025-03-11T12:32:10.726Z
Learning: In the postgresql-for-doctrine repository, PostgreSQL range functions have distinct implementations for different data types. The `Numrange` function works with numeric/decimal values and is tested using the `ContainsDecimals` fixture with properties typed as `float`. In contrast, the `Int4range` function works with 32-bit integers and is tested using the `ContainsIntegers` fixture with properties typed as `int`. While the PHP implementations share a similar structure (extending `BaseFunction`), they are semantically different as they handle different PostgreSQL data types.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#383
File: tests/Unit/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RadiansTest.php:1-9
Timestamp: 2025-05-23T11:11:57.951Z
Learning: Tests in the `Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase directly, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), not PHPUnit's TestCase, and therefore don't need an explicit import statement.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#340
File: tests/MartinGeorgiev/Doctrine/DBAL/Types/InetArrayTest.php:145-145
Timestamp: 2025-04-11T11:23:44.192Z
Learning: In the PostgreSQL for Doctrine test cases, methods that test database-to-PHP conversions should use `mixed` type for parameter and include non-string test cases in their data providers, following the pattern in classes like InetTest, CidrTest, and MacaddrTest.
Learnt from: karpilin
PR: martin-georgiev/postgresql-for-doctrine#386
File: tests/Integration/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ToTimestampTest.php:34-39
Timestamp: 2025-05-27T16:10:35.054Z
Learning: PostgreSQL's to_timestamp function returns a fallback result (like '2005-01-01 00:00:00+00') when given an invalid format string, rather than throwing an exception. This behavior is different from some other formatting functions and should be tested accordingly.
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseRangeTestCase.php (5)
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#263
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/Numrange.php:19-21
Timestamp: 2025-03-11T12:32:10.726Z
Learning: In the postgresql-for-doctrine repository, PostgreSQL range functions have distinct implementations for different data types. The `Numrange` function works with numeric/decimal values and is tested using the `ContainsDecimals` fixture with properties typed as `float`. In contrast, the `Int4range` function works with 32-bit integers and is tested using the `ContainsIntegers` fixture with properties typed as `int`. While the PHP implementations share a similar structure (extending `BaseFunction`), they are semantically different as they handle different PostgreSQL data types.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#383
File: tests/Unit/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RadiansTest.php:1-9
Timestamp: 2025-05-23T11:11:57.951Z
Learning: Tests in the `Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase directly, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), not PHPUnit's TestCase, and therefore don't need an explicit import statement.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#340
File: tests/MartinGeorgiev/Doctrine/DBAL/Types/InetArrayTest.php:145-145
Timestamp: 2025-04-11T11:23:44.192Z
Learning: In the PostgreSQL for Doctrine test cases, methods that test database-to-PHP conversions should use `mixed` type for parameter and include non-string test cases in their data providers, following the pattern in classes like InetTest, CidrTest, and MacaddrTest.
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/DateRangeTest.php (5)
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#263
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/Numrange.php:19-21
Timestamp: 2025-03-11T12:32:10.726Z
Learning: In the postgresql-for-doctrine repository, PostgreSQL range functions have distinct implementations for different data types. The `Numrange` function works with numeric/decimal values and is tested using the `ContainsDecimals` fixture with properties typed as `float`. In contrast, the `Int4range` function works with 32-bit integers and is tested using the `ContainsIntegers` fixture with properties typed as `int`. While the PHP implementations share a similar structure (extending `BaseFunction`), they are semantically different as they handle different PostgreSQL data types.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#383
File: tests/Unit/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RadiansTest.php:1-9
Timestamp: 2025-05-23T11:11:57.951Z
Learning: Tests in the `Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase directly, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), not PHPUnit's TestCase, and therefore don't need an explicit import statement.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#340
File: tests/MartinGeorgiev/Doctrine/DBAL/Types/InetArrayTest.php:145-145
Timestamp: 2025-04-11T11:23:44.192Z
Learning: In the PostgreSQL for Doctrine test cases, methods that test database-to-PHP conversions should use `mixed` type for parameter and include non-string test cases in their data providers, following the pattern in classes like InetTest, CidrTest, and MacaddrTest.
🪛 GitHub Check: PHP 8.1 + Doctrine ORM 2.14 + Doctrine Lexer 1.2
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseRangeTestCase.php
[failure] 147-147:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::provideContainsTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 142-142:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::getComparisonTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 128-128:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createBoundaryTestRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 123-123:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::parseFromString() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 113-113:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInclusiveRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 108-108:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInfiniteRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 103-103:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createEmptyRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 93-93:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createSimpleRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 59-59:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_parse_from_string() has parameter $expectedRange with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
[failure] 52-52:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_check_contains() has parameter $range with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
🪛 GitHub Check: PHP 8.4 + Doctrine ORM 2.14 + Doctrine Lexer latest
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseRangeTestCase.php
[failure] 147-147:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::provideContainsTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 142-142:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::getComparisonTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 128-128:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createBoundaryTestRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 123-123:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::parseFromString() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 113-113:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInclusiveRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 108-108:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInfiniteRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 103-103:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createEmptyRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 93-93:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createSimpleRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 59-59:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_parse_from_string() has parameter $expectedRange with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
[failure] 52-52:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_check_contains() has parameter $range with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
🪛 GitHub Check: PHP 8.4 + Doctrine ORM 3.0 + Doctrine Lexer 3.0
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseRangeTestCase.php
[failure] 147-147:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::provideContainsTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 142-142:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::getComparisonTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 128-128:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createBoundaryTestRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 123-123:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::parseFromString() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 113-113:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInclusiveRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 108-108:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInfiniteRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 103-103:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createEmptyRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 93-93:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createSimpleRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 59-59:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_parse_from_string() has parameter $expectedRange with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
[failure] 52-52:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_check_contains() has parameter $range with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
🪛 GitHub Check: PHP 8.4 + Doctrine ORM 3.0 + Doctrine Lexer latest
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseRangeTestCase.php
[failure] 147-147:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::provideContainsTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 142-142:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::getComparisonTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 128-128:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createBoundaryTestRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 123-123:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::parseFromString() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 113-113:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInclusiveRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 108-108:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInfiniteRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 103-103:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createEmptyRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 93-93:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createSimpleRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 59-59:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_parse_from_string() has parameter $expectedRange with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
[failure] 52-52:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_check_contains() has parameter $range with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
🪛 GitHub Check: PHP 8.4 + Doctrine ORM 2.18 + Doctrine Lexer latest
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseRangeTestCase.php
[failure] 147-147:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::provideContainsTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 142-142:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::getComparisonTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 128-128:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createBoundaryTestRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 123-123:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::parseFromString() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 113-113:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInclusiveRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 108-108:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInfiniteRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 103-103:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createEmptyRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 93-93:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createSimpleRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 59-59:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_parse_from_string() has parameter $expectedRange with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
[failure] 52-52:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_check_contains() has parameter $range with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
🪛 GitHub Check: PHP 8.4 + Doctrine ORM latest + Doctrine Lexer 2.1
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseRangeTestCase.php
[failure] 147-147:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::provideContainsTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 142-142:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::getComparisonTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 128-128:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createBoundaryTestRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 123-123:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::parseFromString() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 113-113:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInclusiveRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 108-108:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInfiniteRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 103-103:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createEmptyRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 93-93:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createSimpleRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 59-59:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_parse_from_string() has parameter $expectedRange with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
[failure] 52-52:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_check_contains() has parameter $range with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
🪛 GitHub Check: PHP 8.4 + Doctrine ORM latest + Doctrine Lexer 3.0
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseRangeTestCase.php
[failure] 147-147:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::provideContainsTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 142-142:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::getComparisonTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 128-128:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createBoundaryTestRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 123-123:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::parseFromString() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 113-113:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInclusiveRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 108-108:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInfiniteRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 103-103:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createEmptyRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 93-93:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createSimpleRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 59-59:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_parse_from_string() has parameter $expectedRange with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
[failure] 52-52:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_check_contains() has parameter $range with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
🪛 GitHub Check: PHP 8.4 + Doctrine ORM 2.18 + Doctrine Lexer 2.1
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseRangeTestCase.php
[failure] 147-147:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::provideContainsTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 142-142:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::getComparisonTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 128-128:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createBoundaryTestRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 123-123:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::parseFromString() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 113-113:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInclusiveRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 108-108:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInfiniteRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 103-103:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createEmptyRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 93-93:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createSimpleRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 59-59:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_parse_from_string() has parameter $expectedRange with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
[failure] 52-52:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_check_contains() has parameter $range with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
🪛 GitHub Check: PHP 8.3 + Doctrine ORM 2.18 + Doctrine Lexer 3.0
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseRangeTestCase.php
[failure] 147-147:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::provideContainsTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 142-142:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::getComparisonTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 128-128:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createBoundaryTestRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 123-123:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::parseFromString() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 113-113:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInclusiveRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 108-108:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInfiniteRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 103-103:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createEmptyRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 93-93:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createSimpleRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 59-59:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_parse_from_string() has parameter $expectedRange with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
[failure] 52-52:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_check_contains() has parameter $range with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
🪛 GitHub Check: PHP 8.3 + Doctrine ORM 2.18 + Doctrine Lexer latest
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseRangeTestCase.php
[failure] 147-147:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::provideContainsTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 142-142:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::getComparisonTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 128-128:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createBoundaryTestRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 123-123:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::parseFromString() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 113-113:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInclusiveRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 108-108:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInfiniteRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 103-103:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createEmptyRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 93-93:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createSimpleRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 59-59:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_parse_from_string() has parameter $expectedRange with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
[failure] 52-52:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_check_contains() has parameter $range with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
🪛 GitHub Check: PHP 8.4 + Doctrine ORM 2.18 + Doctrine Lexer 3.0
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseRangeTestCase.php
[failure] 147-147:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::provideContainsTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 142-142:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::getComparisonTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 128-128:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createBoundaryTestRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 123-123:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::parseFromString() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 113-113:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInclusiveRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 108-108:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInfiniteRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 103-103:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createEmptyRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 93-93:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createSimpleRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 59-59:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_parse_from_string() has parameter $expectedRange with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
[failure] 52-52:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_check_contains() has parameter $range with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
🪛 GitHub Check: PHP 8.4 + Doctrine ORM 2.14 + Doctrine Lexer 2.1
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseRangeTestCase.php
[failure] 147-147:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::provideContainsTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 142-142:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::getComparisonTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 128-128:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createBoundaryTestRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 123-123:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::parseFromString() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 113-113:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInclusiveRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 108-108:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInfiniteRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 103-103:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createEmptyRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 93-93:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createSimpleRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 59-59:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_parse_from_string() has parameter $expectedRange with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
[failure] 52-52:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_check_contains() has parameter $range with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
🪛 GitHub Check: PHP 8.3 + Doctrine ORM 2.14 + Doctrine Lexer latest
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseRangeTestCase.php
[failure] 147-147:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::provideContainsTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 142-142:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::getComparisonTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 128-128:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createBoundaryTestRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 123-123:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::parseFromString() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 113-113:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInclusiveRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 108-108:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInfiniteRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 103-103:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createEmptyRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 93-93:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createSimpleRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 59-59:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_parse_from_string() has parameter $expectedRange with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
[failure] 52-52:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_check_contains() has parameter $range with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
🪛 GitHub Check: PHP 8.3 + Doctrine ORM latest + Doctrine Lexer latest
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseRangeTestCase.php
[failure] 147-147:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::provideContainsTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 142-142:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::getComparisonTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 128-128:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createBoundaryTestRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 123-123:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::parseFromString() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 113-113:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInclusiveRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 108-108:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInfiniteRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 103-103:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createEmptyRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 93-93:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createSimpleRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 59-59:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_parse_from_string() has parameter $expectedRange with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
[failure] 52-52:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_check_contains() has parameter $range with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
🪛 GitHub Check: PHP 8.3 + Doctrine ORM 3.0 + Doctrine Lexer latest
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseRangeTestCase.php
[failure] 147-147:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::provideContainsTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 142-142:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::getComparisonTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 128-128:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createBoundaryTestRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 123-123:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::parseFromString() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 113-113:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInclusiveRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 108-108:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInfiniteRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 103-103:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createEmptyRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 93-93:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createSimpleRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 59-59:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_parse_from_string() has parameter $expectedRange with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
[failure] 52-52:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_check_contains() has parameter $range with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
🪛 GitHub Check: PHP 8.3 + Doctrine ORM 2.18 + Doctrine Lexer 2.1
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseRangeTestCase.php
[failure] 147-147:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::provideContainsTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 142-142:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::getComparisonTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 128-128:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createBoundaryTestRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 123-123:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::parseFromString() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 113-113:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInclusiveRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 108-108:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInfiniteRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 103-103:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createEmptyRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 93-93:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createSimpleRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 59-59:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_parse_from_string() has parameter $expectedRange with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
[failure] 52-52:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_check_contains() has parameter $range with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
🪛 GitHub Check: PHP 8.3 + Doctrine ORM latest + Doctrine Lexer 3.0
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseRangeTestCase.php
[failure] 147-147:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::provideContainsTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 142-142:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::getComparisonTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 128-128:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createBoundaryTestRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 123-123:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::parseFromString() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 113-113:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInclusiveRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 108-108:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInfiniteRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 103-103:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createEmptyRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 93-93:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createSimpleRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 59-59:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_parse_from_string() has parameter $expectedRange with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
[failure] 52-52:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_check_contains() has parameter $range with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
🪛 GitHub Check: PHP 8.3 + Doctrine ORM latest + Doctrine Lexer 2.1
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseRangeTestCase.php
[failure] 147-147:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::provideContainsTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 142-142:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::getComparisonTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 128-128:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createBoundaryTestRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 123-123:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::parseFromString() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 113-113:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInclusiveRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 108-108:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInfiniteRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 103-103:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createEmptyRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 93-93:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createSimpleRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 59-59:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_parse_from_string() has parameter $expectedRange with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
[failure] 52-52:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_check_contains() has parameter $range with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
🪛 GitHub Check: PHP 8.3 + Doctrine ORM 3.0 + Doctrine Lexer 3.0
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseRangeTestCase.php
[failure] 147-147:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::provideContainsTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 142-142:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::getComparisonTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 128-128:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createBoundaryTestRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 123-123:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::parseFromString() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 113-113:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInclusiveRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 108-108:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInfiniteRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 103-103:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createEmptyRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 93-93:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createSimpleRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 59-59:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_parse_from_string() has parameter $expectedRange with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
[failure] 52-52:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_check_contains() has parameter $range with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
🪛 GitHub Check: PHP 8.2 + Doctrine ORM 3.0 + Doctrine Lexer latest
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseRangeTestCase.php
[failure] 147-147:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::provideContainsTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 142-142:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::getComparisonTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 128-128:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createBoundaryTestRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 123-123:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::parseFromString() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 113-113:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInclusiveRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 108-108:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInfiniteRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 103-103:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createEmptyRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 93-93:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createSimpleRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 59-59:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_parse_from_string() has parameter $expectedRange with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
[failure] 52-52:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_check_contains() has parameter $range with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
🪛 GitHub Check: PHP 8.2 + Doctrine ORM 2.14 + Doctrine Lexer 2.1
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseRangeTestCase.php
[failure] 147-147:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::provideContainsTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 142-142:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::getComparisonTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 128-128:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createBoundaryTestRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 123-123:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::parseFromString() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 113-113:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInclusiveRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 108-108:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInfiniteRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 103-103:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createEmptyRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 93-93:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createSimpleRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 59-59:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_parse_from_string() has parameter $expectedRange with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
[failure] 52-52:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_check_contains() has parameter $range with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
🪛 GitHub Check: PHP 8.1 + Doctrine ORM latest + Doctrine Lexer latest
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseRangeTestCase.php
[failure] 147-147:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::provideContainsTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 142-142:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::getComparisonTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 128-128:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createBoundaryTestRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 123-123:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::parseFromString() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 113-113:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInclusiveRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 108-108:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInfiniteRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 103-103:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createEmptyRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 93-93:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createSimpleRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 59-59:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_parse_from_string() has parameter $expectedRange with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
[failure] 52-52:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_check_contains() has parameter $range with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
🪛 GitHub Check: PHP 8.2 + Doctrine ORM latest + Doctrine Lexer 3.0
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseRangeTestCase.php
[failure] 147-147:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::provideContainsTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 142-142:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::getComparisonTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 128-128:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createBoundaryTestRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 123-123:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::parseFromString() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 113-113:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInclusiveRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 108-108:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInfiniteRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 103-103:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createEmptyRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 93-93:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createSimpleRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 59-59:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_parse_from_string() has parameter $expectedRange with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
[failure] 52-52:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_check_contains() has parameter $range with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
🪛 GitHub Check: PHP 8.3 + Doctrine ORM 2.14 + Doctrine Lexer 2.1
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseRangeTestCase.php
[failure] 147-147:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::provideContainsTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 142-142:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::getComparisonTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 128-128:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createBoundaryTestRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 123-123:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::parseFromString() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 113-113:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInclusiveRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 108-108:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInfiniteRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 103-103:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createEmptyRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 93-93:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createSimpleRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 59-59:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_parse_from_string() has parameter $expectedRange with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
[failure] 52-52:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_check_contains() has parameter $range with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
🪛 GitHub Check: PHP 8.2 + Doctrine ORM latest + Doctrine Lexer latest
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseRangeTestCase.php
[failure] 147-147:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::provideContainsTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 142-142:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::getComparisonTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 128-128:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createBoundaryTestRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 123-123:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::parseFromString() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 113-113:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInclusiveRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 108-108:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInfiniteRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 103-103:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createEmptyRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 93-93:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createSimpleRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 59-59:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_parse_from_string() has parameter $expectedRange with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
[failure] 52-52:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_check_contains() has parameter $range with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
🪛 GitHub Check: PHP 8.2 + Doctrine ORM 2.18 + Doctrine Lexer 3.0
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseRangeTestCase.php
[failure] 147-147:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::provideContainsTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 142-142:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::getComparisonTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 128-128:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createBoundaryTestRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 123-123:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::parseFromString() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 113-113:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInclusiveRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 108-108:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInfiniteRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 103-103:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createEmptyRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 93-93:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createSimpleRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 59-59:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_parse_from_string() has parameter $expectedRange with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
[failure] 52-52:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_check_contains() has parameter $range with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
🪛 GitHub Check: PHP 8.2 + Doctrine ORM latest + Doctrine Lexer 2.1
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseRangeTestCase.php
[failure] 147-147:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::provideContainsTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 142-142:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::getComparisonTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 128-128:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createBoundaryTestRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 123-123:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::parseFromString() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 113-113:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInclusiveRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 108-108:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInfiniteRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 103-103:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createEmptyRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 93-93:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createSimpleRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 59-59:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_parse_from_string() has parameter $expectedRange with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
[failure] 52-52:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_check_contains() has parameter $range with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
🪛 GitHub Check: PHP 8.2 + Doctrine ORM 3.0 + Doctrine Lexer 3.0
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseRangeTestCase.php
[failure] 147-147:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::provideContainsTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 142-142:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::getComparisonTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 128-128:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createBoundaryTestRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 123-123:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::parseFromString() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 113-113:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInclusiveRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 108-108:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInfiniteRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 103-103:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createEmptyRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 93-93:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createSimpleRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 59-59:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_parse_from_string() has parameter $expectedRange with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
[failure] 52-52:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_check_contains() has parameter $range with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
🪛 GitHub Check: PHP 8.2 + Doctrine ORM 2.18 + Doctrine Lexer latest
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseRangeTestCase.php
[failure] 147-147:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::provideContainsTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 142-142:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::getComparisonTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 128-128:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createBoundaryTestRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 123-123:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::parseFromString() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 113-113:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInclusiveRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 108-108:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInfiniteRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 103-103:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createEmptyRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 93-93:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createSimpleRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 59-59:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_parse_from_string() has parameter $expectedRange with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
[failure] 52-52:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_check_contains() has parameter $range with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
🪛 GitHub Check: PHP 8.2 + Doctrine ORM 2.18 + Doctrine Lexer 2.1
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseRangeTestCase.php
[failure] 147-147:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::provideContainsTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 142-142:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::getComparisonTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 128-128:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createBoundaryTestRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 123-123:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::parseFromString() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 113-113:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInclusiveRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 108-108:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInfiniteRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 103-103:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createEmptyRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 93-93:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createSimpleRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 59-59:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_parse_from_string() has parameter $expectedRange with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
[failure] 52-52:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_check_contains() has parameter $range with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
🪛 GitHub Check: PHP 8.1 + Doctrine ORM latest + Doctrine Lexer 3.0
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseRangeTestCase.php
[failure] 147-147:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::provideContainsTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 142-142:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::getComparisonTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 128-128:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createBoundaryTestRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 123-123:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::parseFromString() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 113-113:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInclusiveRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 108-108:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInfiniteRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 103-103:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createEmptyRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 93-93:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createSimpleRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 59-59:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_parse_from_string() has parameter $expectedRange with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
[failure] 52-52:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_check_contains() has parameter $range with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
🪛 GitHub Check: PHP 8.1 + Doctrine ORM 2.18 + Doctrine Lexer 2.1
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseRangeTestCase.php
[failure] 147-147:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::provideContainsTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 142-142:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::getComparisonTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 128-128:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createBoundaryTestRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 123-123:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::parseFromString() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 113-113:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInclusiveRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 108-108:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInfiniteRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 103-103:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createEmptyRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 93-93:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createSimpleRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 59-59:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_parse_from_string() has parameter $expectedRange with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
[failure] 52-52:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_check_contains() has parameter $range with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
🪛 GitHub Check: PHP 8.1 + Doctrine ORM 2.18 + Doctrine Lexer 3.0
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseRangeTestCase.php
[failure] 147-147:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::provideContainsTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 142-142:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::getComparisonTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 128-128:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createBoundaryTestRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 123-123:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::parseFromString() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 113-113:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInclusiveRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 108-108:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInfiniteRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 103-103:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createEmptyRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 93-93:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createSimpleRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 59-59:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_parse_from_string() has parameter $expectedRange with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
[failure] 52-52:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_check_contains() has parameter $range with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
🪛 GitHub Check: PHP 8.1 + Doctrine ORM 3.0 + Doctrine Lexer latest
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseRangeTestCase.php
[failure] 147-147:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::provideContainsTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 142-142:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::getComparisonTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 128-128:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createBoundaryTestRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 123-123:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::parseFromString() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 113-113:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInclusiveRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 108-108:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInfiniteRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 103-103:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createEmptyRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 93-93:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createSimpleRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 59-59:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_parse_from_string() has parameter $expectedRange with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
[failure] 52-52:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_check_contains() has parameter $range with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
🪛 GitHub Check: PHP 8.1 + Doctrine ORM 2.14 + Doctrine Lexer latest
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseRangeTestCase.php
[failure] 147-147:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::provideContainsTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 142-142:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::getComparisonTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 128-128:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createBoundaryTestRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 123-123:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::parseFromString() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 113-113:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInclusiveRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 108-108:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInfiniteRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 103-103:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createEmptyRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 93-93:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createSimpleRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 59-59:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_parse_from_string() has parameter $expectedRange with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
[failure] 52-52:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_check_contains() has parameter $range with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
🪛 GitHub Check: PHP 8.1 + Doctrine ORM 3.0 + Doctrine Lexer 3.0
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseRangeTestCase.php
[failure] 147-147:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::provideContainsTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 142-142:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::getComparisonTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 128-128:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createBoundaryTestRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 123-123:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::parseFromString() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 113-113:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInclusiveRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 108-108:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInfiniteRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 103-103:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createEmptyRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 93-93:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createSimpleRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 59-59:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_parse_from_string() has parameter $expectedRange with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
[failure] 52-52:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_check_contains() has parameter $range with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
🪛 GitHub Check: PHP 8.1 + Doctrine ORM latest + Doctrine Lexer 2.1
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseRangeTestCase.php
[failure] 147-147:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::provideContainsTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 142-142:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::getComparisonTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 128-128:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createBoundaryTestRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 123-123:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::parseFromString() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 113-113:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInclusiveRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 108-108:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInfiniteRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 103-103:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createEmptyRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 93-93:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createSimpleRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 59-59:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_parse_from_string() has parameter $expectedRange with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
[failure] 52-52:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_check_contains() has parameter $range with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
🪛 GitHub Check: PHP 8.1 + Doctrine ORM 2.14 + Doctrine Lexer 2.1
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseRangeTestCase.php
[failure] 147-147:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::provideContainsTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 142-142:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::getComparisonTestCases() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 128-128:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createBoundaryTestRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 123-123:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::parseFromString() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 113-113:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInclusiveRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 108-108:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createInfiniteRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 103-103:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createEmptyRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 93-93:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::createSimpleRange() return type with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range does not specify its types: R
[failure] 59-59:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_parse_from_string() has parameter $expectedRange with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
[failure] 52-52:
Method Tests\Unit\MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\BaseRangeTestCase::can_check_contains() has parameter $range with generic class MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range but does not specify its types: R
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (6)
- GitHub Check: PostgreSQL 16 + PHP 8.4
- GitHub Check: PHP 8.1 + Doctrine ORM 2.14 + Doctrine Lexer 1.2
- GitHub Check: PHP 8.4 + Doctrine ORM latest + Doctrine Lexer latest
- GitHub Check: PHP 8.3 + Doctrine ORM 2.18 + Doctrine Lexer latest
- GitHub Check: PHP 8.2 + Doctrine ORM 2.14 + Doctrine Lexer latest
- GitHub Check: PHP 8.1 + Doctrine ORM 2.18 + Doctrine Lexer latest
🔇 Additional comments (2)
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseRangeTestCase.php (1)
7-7
: Ignore the import suggestion—Range is already imported and declared as a genericThe
use MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Range;
statement is correct, and theRange
class is annotated with@template R of int|float|\DateTimeInterface
. The static-analysis warnings you’re seeing stem from usingRange
without specifying its type parameter in method signatures, not from a missing import. If you’d like to satisfy your analyzer, add docblock annotations on each test method (e.g.@param Range<int> $range
) rather than changing the import.Likely an incorrect or invalid review comment.
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseTimestampRangeTestCase.php (1)
14-15
: Well-structured timestamp test base classExcellent design extending BaseRangeTestCase with timestamp-specific test patterns. The abstract methods provide clear extension points for concrete implementations.
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/DateRangeTest.php
Outdated
Show resolved
Hide resolved
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/NumericRangeTest.php
Outdated
Show resolved
Hide resolved
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/TstzRangeTest.php
Outdated
Show resolved
Hide resolved
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/TstzRangeTest.php
Outdated
Show resolved
Hide resolved
Is it possible to use for example the |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (1)
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/NumericRangeTest.php (1)
149-202
: Consider more precise assertions for string formatting tests.While the current approach using
assertStringContainsString
works, it's somewhat indirect. Consider testing the actual parsed values or using exact string comparisons where possible for more precise validation.However, given that these tests are validating PostgreSQL range string formatting, the current approach is acceptable and provides adequate coverage.
Example of more precise assertion:
$numericRange = NumericRange::fromString('[42,100)'); -self::assertStringContainsString('42', (string) $numericRange); +self::assertEquals('[42,100)', (string) $numericRange);
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (3)
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/DateRangeTest.php
(1 hunks)tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/NumericRangeTest.php
(1 hunks)tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/TstzRangeTest.php
(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
- tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/TstzRangeTest.php
- tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/DateRangeTest.php
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#263
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/Numrange.php:19-21
Timestamp: 2025-03-11T12:32:10.726Z
Learning: In the postgresql-for-doctrine repository, PostgreSQL range functions have distinct implementations for different data types. The `Numrange` function works with numeric/decimal values and is tested using the `ContainsDecimals` fixture with properties typed as `float`. In contrast, the `Int4range` function works with 32-bit integers and is tested using the `ContainsIntegers` fixture with properties typed as `int`. While the PHP implementations share a similar structure (extending `BaseFunction`), they are semantically different as they handle different PostgreSQL data types.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#0
File: :0-0
Timestamp: 2025-03-26T02:46:12.804Z
Learning: The PR "preserve the type of floats and integers when transforming back and forth between PostgreSQL and PHP" improves type handling by ensuring that integers remain integers, floats remain floats, numeric strings stay as strings, and booleans are properly converted through the transformation process.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#352
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpInstrTest.php:1-67
Timestamp: 2025-04-20T11:24:18.300Z
Learning: This PostgreSQL-for-Doctrine project is a translation layer only, focusing on correctly converting Doctrine DQL to PostgreSQL SQL syntax. It ensures arguments are passed in the expected format but does not test or handle PostgreSQL's actual function behavior or data handling. Test cases should focus on DQL-to-SQL translation and argument validation, not on PostgreSQL-specific behaviors.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#340
File: tests/MartinGeorgiev/Doctrine/DBAL/Types/InetArrayTest.php:145-145
Timestamp: 2025-04-11T11:23:44.192Z
Learning: In the PostgreSQL for Doctrine test cases, methods that test database-to-PHP conversions should use `mixed` type for parameter and include non-string test cases in their data providers, following the pattern in classes like InetTest, CidrTest, and MacaddrTest.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#357
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpMatchTest.php:28-62
Timestamp: 2025-04-22T00:03:37.733Z
Learning: This project focuses on providing Doctrine ORM interfaces to PostgreSQL functions. Tests should validate correct DQL-to-SQL translation rather than PostgreSQL functionality itself. Test cases should focus on parameter passing and SQL generation, not on testing specific PostgreSQL regex pattern behaviors.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#350
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/BaseVariadicFunction.php:78-88
Timestamp: 2025-04-18T10:33:52.412Z
Learning: In SQL generation code for the postgresql-for-doctrine library, it's better to fail explicitly with clear errors than to use fallback behavior that makes assumptions about node types, as this could lead to functional bugs or security issues.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#0
File: :0-0
Timestamp: 2025-03-11T17:02:51.971Z
Learning: The PostgreSQL-for-doctrine library implements the JSON array element existence check using the `RIGHT_EXISTS_ON_LEFT` DQL function, which maps to PostgreSQL's `?` operator. This is used for checking if a specific value exists in a JSONB array column.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#277
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonValueTest.php:19-35
Timestamp: 2025-03-13T15:00:16.619Z
Learning: The JsonValue implementation in postgres-for-doctrine has documented limitations: it does not support RETURNING type, DEFAULT clause, ON ERROR clause, ON EMPTY clause, and other advanced PostgreSQL JSON_VALUE features due to DQL limitations.
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/NumericRangeTest.php (5)
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#263
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/Numrange.php:19-21
Timestamp: 2025-03-11T12:32:10.726Z
Learning: In the postgresql-for-doctrine repository, PostgreSQL range functions have distinct implementations for different data types. The `Numrange` function works with numeric/decimal values and is tested using the `ContainsDecimals` fixture with properties typed as `float`. In contrast, the `Int4range` function works with 32-bit integers and is tested using the `ContainsIntegers` fixture with properties typed as `int`. While the PHP implementations share a similar structure (extending `BaseFunction`), they are semantically different as they handle different PostgreSQL data types.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#340
File: tests/MartinGeorgiev/Doctrine/DBAL/Types/InetArrayTest.php:145-145
Timestamp: 2025-04-11T11:23:44.192Z
Learning: In the PostgreSQL for Doctrine test cases, methods that test database-to-PHP conversions should use `mixed` type for parameter and include non-string test cases in their data providers, following the pattern in classes like InetTest, CidrTest, and MacaddrTest.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#383
File: tests/Unit/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RadiansTest.php:1-9
Timestamp: 2025-05-23T11:11:57.951Z
Learning: Tests in the `Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase directly, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), not PHPUnit's TestCase, and therefore don't need an explicit import statement.
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (19)
- GitHub Check: PHP 8.4 + Doctrine ORM 3.0 + Doctrine Lexer 3.0
- GitHub Check: PHP 8.4 + Doctrine ORM latest + Doctrine Lexer latest
- GitHub Check: PHP 8.1 + Doctrine ORM 2.14 + Doctrine Lexer 1.2
- GitHub Check: PHP 8.4 + Doctrine ORM 2.18 + Doctrine Lexer latest
- GitHub Check: PHP 8.3 + Doctrine ORM latest + Doctrine Lexer 3.0
- GitHub Check: PHP 8.3 + Doctrine ORM 2.18 + Doctrine Lexer latest
- GitHub Check: PHP 8.3 + Doctrine ORM 3.0 + Doctrine Lexer 3.0
- GitHub Check: PHP 8.3 + Doctrine ORM latest + Doctrine Lexer latest
- GitHub Check: PHP 8.3 + Doctrine ORM 2.14 + Doctrine Lexer 2.1
- GitHub Check: PHP 8.3 + Doctrine ORM 2.18 + Doctrine Lexer 2.1
- GitHub Check: PHP 8.2 + Doctrine ORM latest + Doctrine Lexer 2.1
- GitHub Check: PHP 8.2 + Doctrine ORM latest + Doctrine Lexer latest
- GitHub Check: PHP 8.2 + Doctrine ORM 3.0 + Doctrine Lexer latest
- GitHub Check: PHP 8.1 + Doctrine ORM 2.14 + Doctrine Lexer latest
- GitHub Check: PostgreSQL 17 + PHP 8.4
- GitHub Check: PostgreSQL 16 + PHP 8.4
- GitHub Check: PostgreSQL 17 + PHP 8.3
- GitHub Check: PostgreSQL 16 + PHP 8.2
- GitHub Check: PostgreSQL 17 + PHP 8.1
🔇 Additional comments (5)
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/NumericRangeTest.php (5)
1-11
: LGTM: Clean file structure and appropriate imports.The file follows proper PHP standards with strict typing, correct namespace, and all necessary imports for the test functionality.
12-47
: LGTM: Proper implementation of abstract base class methods.The class correctly extends
BaseRangeTestCase
and implements all required abstract methods. The numeric range examples use appropriate float values (1.5, 10.7) and the expected string format follows PostgreSQL range conventions.
54-86
: LGTM: Comprehensive boundary and comparison test cases.The test case data providers cover essential scenarios including boundary inclusivity/exclusivity, reverse ranges, equal bounds, and edge cases. This provides thorough coverage for range validation logic.
88-108
: LGTM: Well-structured data providers with good edge case coverage.Both data providers include appropriate test cases:
provideContainsTestCases
: Tests boundary conditions and null handlingprovideFromStringTestCases
: Covers various range formats including infinite and empty rangesThe test cases align with PostgreSQL range syntax expectations.
110-147
: LGTM: Proper exception handling validation.The exception tests correctly verify:
- Invalid bounds throw
InvalidArgumentException
with appropriate messages- Runtime validation errors throw
InvalidRangeForPHPException
- Invalid parsing throws
InvalidArgumentException
The tests use proper PHPUnit expectation setup and test realistic error scenarios.
- Add proper template annotations to test base classes and suppress. - PHPStan errors for lack of covariant generics support. - Maintains DRY test structure while ensuring static analysis passes cleanly.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (3)
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/TstzRangeTest.php (1)
247-257
: Improve test to actually use different DateTime implementations.The test method name suggests testing different DateTime implementations, but both variables use
DateTimeImmutable
. Consider using bothDateTime
andDateTimeImmutable
to truly test differentDateTimeInterface
implementations.public function can_handle_different_datetime_implementations(): void { - $dateTime = new \DateTimeImmutable('2023-01-01 10:00:00+02:00'); + $dateTime = new \DateTime('2023-01-01 10:00:00+02:00'); $dateTimeImmutable = new \DateTimeImmutable('2023-01-01 18:00:00-05:00'); $tstzRange = new TstzRange($dateTime, $dateTimeImmutable); $formatted = (string) $tstzRange; self::assertStringContainsString('+02:00', $formatted); self::assertStringContainsString('-05:00', $formatted); }tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/TsRangeTest.php (2)
221-229
: Remove duplicate test for microseconds handling.The tests
handles_microseconds_correctly()
andcan_handle_microseconds_in_formatting()
are testing identical functionality with the same test data and assertions.Remove the duplicate test:
- #[Test] - public function can_handle_microseconds_in_formatting(): void - { - $tsRange = new TsRange( - new \DateTimeImmutable('2023-01-01 10:00:00.123456'), - new \DateTimeImmutable('2023-01-01 18:00:00.654321') - ); - - self::assertEquals('[2023-01-01 10:00:00.123456,2023-01-01 18:00:00.654321)', (string) $tsRange); - }Also applies to: 253-262
241-251
: Consolidate redundant string formatting tests.The tests
can_format_timestamp_values_via_to_string()
andcan_parse_timestamp_strings_via_from_string()
have overlapping coverage with other tests and could be simplified or merged.Consider consolidating these tests or ensuring they test distinct aspects:
- The formatting test duplicates what's already covered in
handles_microseconds_correctly()
- The parsing test could be enhanced to verify round-trip consistency
#[Test] -public function can_format_timestamp_values_via_to_string(): void +public function can_roundtrip_timestamp_values(): void { $tsRange = new TsRange( new \DateTimeImmutable('2023-06-15 14:30:25.123456'), new \DateTimeImmutable('2023-06-15 18:45:30.654321') ); - $formatted = (string) $tsRange; - self::assertStringContainsString('2023-06-15 14:30:25.123456', $formatted); - self::assertStringContainsString('2023-06-15 18:45:30.654321', $formatted); + $formatted = (string) $tsRange; + $parsed = TsRange::fromString($formatted); + self::assertEquals($formatted, (string) $parsed); }Also applies to: 265-272
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (9)
ci/phpstan/baselines/range-baseline.neon
(1 hunks)tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseRangeTestCase.php
(1 hunks)tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseTimestampRangeTestCase.php
(1 hunks)tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/DateRangeTest.php
(1 hunks)tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/Int4RangeTest.php
(1 hunks)tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/Int8RangeTest.php
(1 hunks)tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/NumericRangeTest.php
(1 hunks)tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/TsRangeTest.php
(1 hunks)tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/TstzRangeTest.php
(1 hunks)
✅ Files skipped from review due to trivial changes (1)
- ci/phpstan/baselines/range-baseline.neon
🚧 Files skipped from review as they are similar to previous changes (5)
- tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/Int8RangeTest.php
- tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseTimestampRangeTestCase.php
- tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/NumericRangeTest.php
- tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/Int4RangeTest.php
- tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/DateRangeTest.php
🧰 Additional context used
🧠 Learnings (4)
📓 Common learnings
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#263
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/Numrange.php:19-21
Timestamp: 2025-03-11T12:32:10.726Z
Learning: In the postgresql-for-doctrine repository, PostgreSQL range functions have distinct implementations for different data types. The `Numrange` function works with numeric/decimal values and is tested using the `ContainsDecimals` fixture with properties typed as `float`. In contrast, the `Int4range` function works with 32-bit integers and is tested using the `ContainsIntegers` fixture with properties typed as `int`. While the PHP implementations share a similar structure (extending `BaseFunction`), they are semantically different as they handle different PostgreSQL data types.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#0
File: :0-0
Timestamp: 2025-03-26T02:46:12.804Z
Learning: The PR "preserve the type of floats and integers when transforming back and forth between PostgreSQL and PHP" improves type handling by ensuring that integers remain integers, floats remain floats, numeric strings stay as strings, and booleans are properly converted through the transformation process.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#352
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpInstrTest.php:1-67
Timestamp: 2025-04-20T11:24:18.300Z
Learning: This PostgreSQL-for-Doctrine project is a translation layer only, focusing on correctly converting Doctrine DQL to PostgreSQL SQL syntax. It ensures arguments are passed in the expected format but does not test or handle PostgreSQL's actual function behavior or data handling. Test cases should focus on DQL-to-SQL translation and argument validation, not on PostgreSQL-specific behaviors.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#340
File: tests/MartinGeorgiev/Doctrine/DBAL/Types/InetArrayTest.php:145-145
Timestamp: 2025-04-11T11:23:44.192Z
Learning: In the PostgreSQL for Doctrine test cases, methods that test database-to-PHP conversions should use `mixed` type for parameter and include non-string test cases in their data providers, following the pattern in classes like InetTest, CidrTest, and MacaddrTest.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#357
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpMatchTest.php:28-62
Timestamp: 2025-04-22T00:03:37.733Z
Learning: This project focuses on providing Doctrine ORM interfaces to PostgreSQL functions. Tests should validate correct DQL-to-SQL translation rather than PostgreSQL functionality itself. Test cases should focus on parameter passing and SQL generation, not on testing specific PostgreSQL regex pattern behaviors.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#350
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/BaseVariadicFunction.php:78-88
Timestamp: 2025-04-18T10:33:52.412Z
Learning: In SQL generation code for the postgresql-for-doctrine library, it's better to fail explicitly with clear errors than to use fallback behavior that makes assumptions about node types, as this could lead to functional bugs or security issues.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#0
File: :0-0
Timestamp: 2025-03-11T17:02:51.971Z
Learning: The PostgreSQL-for-doctrine library implements the JSON array element existence check using the `RIGHT_EXISTS_ON_LEFT` DQL function, which maps to PostgreSQL's `?` operator. This is used for checking if a specific value exists in a JSONB array column.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#277
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonValueTest.php:19-35
Timestamp: 2025-03-13T15:00:16.619Z
Learning: The JsonValue implementation in postgres-for-doctrine has documented limitations: it does not support RETURNING type, DEFAULT clause, ON ERROR clause, ON EMPTY clause, and other advanced PostgreSQL JSON_VALUE features due to DQL limitations.
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/TstzRangeTest.php (6)
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#263
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/Numrange.php:19-21
Timestamp: 2025-03-11T12:32:10.726Z
Learning: In the postgresql-for-doctrine repository, PostgreSQL range functions have distinct implementations for different data types. The `Numrange` function works with numeric/decimal values and is tested using the `ContainsDecimals` fixture with properties typed as `float`. In contrast, the `Int4range` function works with 32-bit integers and is tested using the `ContainsIntegers` fixture with properties typed as `int`. While the PHP implementations share a similar structure (extending `BaseFunction`), they are semantically different as they handle different PostgreSQL data types.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#383
File: tests/Unit/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RadiansTest.php:1-9
Timestamp: 2025-05-23T11:11:57.951Z
Learning: Tests in the `Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase directly, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), not PHPUnit's TestCase, and therefore don't need an explicit import statement.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#340
File: tests/MartinGeorgiev/Doctrine/DBAL/Types/InetArrayTest.php:145-145
Timestamp: 2025-04-11T11:23:44.192Z
Learning: In the PostgreSQL for Doctrine test cases, methods that test database-to-PHP conversions should use `mixed` type for parameter and include non-string test cases in their data providers, following the pattern in classes like InetTest, CidrTest, and MacaddrTest.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#357
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpMatchTest.php:28-62
Timestamp: 2025-04-22T00:03:37.733Z
Learning: This project focuses on providing Doctrine ORM interfaces to PostgreSQL functions. Tests should validate correct DQL-to-SQL translation rather than PostgreSQL functionality itself. Test cases should focus on parameter passing and SQL generation, not on testing specific PostgreSQL regex pattern behaviors.
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseRangeTestCase.php (5)
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#263
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/Numrange.php:19-21
Timestamp: 2025-03-11T12:32:10.726Z
Learning: In the postgresql-for-doctrine repository, PostgreSQL range functions have distinct implementations for different data types. The `Numrange` function works with numeric/decimal values and is tested using the `ContainsDecimals` fixture with properties typed as `float`. In contrast, the `Int4range` function works with 32-bit integers and is tested using the `ContainsIntegers` fixture with properties typed as `int`. While the PHP implementations share a similar structure (extending `BaseFunction`), they are semantically different as they handle different PostgreSQL data types.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#383
File: tests/Unit/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RadiansTest.php:1-9
Timestamp: 2025-05-23T11:11:57.951Z
Learning: Tests in the `Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase directly, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), not PHPUnit's TestCase, and therefore don't need an explicit import statement.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#340
File: tests/MartinGeorgiev/Doctrine/DBAL/Types/InetArrayTest.php:145-145
Timestamp: 2025-04-11T11:23:44.192Z
Learning: In the PostgreSQL for Doctrine test cases, methods that test database-to-PHP conversions should use `mixed` type for parameter and include non-string test cases in their data providers, following the pattern in classes like InetTest, CidrTest, and MacaddrTest.
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/TsRangeTest.php (6)
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#263
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/Numrange.php:19-21
Timestamp: 2025-03-11T12:32:10.726Z
Learning: In the postgresql-for-doctrine repository, PostgreSQL range functions have distinct implementations for different data types. The `Numrange` function works with numeric/decimal values and is tested using the `ContainsDecimals` fixture with properties typed as `float`. In contrast, the `Int4range` function works with 32-bit integers and is tested using the `ContainsIntegers` fixture with properties typed as `int`. While the PHP implementations share a similar structure (extending `BaseFunction`), they are semantically different as they handle different PostgreSQL data types.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#383
File: tests/Unit/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RadiansTest.php:1-9
Timestamp: 2025-05-23T11:11:57.951Z
Learning: Tests in the `Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase directly, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), not PHPUnit's TestCase, and therefore don't need an explicit import statement.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the `Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions` namespace extend a custom `TestCase` class from the same namespace (`Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase`), rather than PHPUnit's TestCase, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#340
File: tests/MartinGeorgiev/Doctrine/DBAL/Types/InetArrayTest.php:145-145
Timestamp: 2025-04-11T11:23:44.192Z
Learning: In the PostgreSQL for Doctrine test cases, methods that test database-to-PHP conversions should use `mixed` type for parameter and include non-string test cases in their data providers, following the pattern in classes like InetTest, CidrTest, and MacaddrTest.
Learnt from: karpilin
PR: martin-georgiev/postgresql-for-doctrine#386
File: tests/Integration/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ToTimestampTest.php:34-39
Timestamp: 2025-05-27T16:10:35.054Z
Learning: PostgreSQL's to_timestamp function returns a fallback result (like '2005-01-01 00:00:00+00') when given an invalid format string, rather than throwing an exception. This behavior is different from some other formatting functions and should be tested accordingly.
🧬 Code Graph Analysis (1)
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/TstzRangeTest.php (4)
src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/Range.php (6)
Range
(16-145)empty
(136-139)infinite
(141-144)fromString
(81-103)isEmpty
(56-72)contains
(107-134)src/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/TstzRange.php (1)
TstzRange
(14-24)tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/TstzRangeTest.php (1)
TstzRangeTest
(13-61)tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseTimestampRangeTestCase.php (9)
BaseTimestampRangeTestCase
(18-178)getTestStartTime
(147-147)getTestEndTime
(152-152)createRangeWithTimes
(137-142)getTimeBeforeRange
(157-157)getTimeInMiddle
(162-162)createTimeWithMicroseconds
(167-167)getTestStartTimeString
(172-172)getTestEndTimeString
(177-177)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (17)
- GitHub Check: PostgreSQL 17 + PHP 8.4
- GitHub Check: PostgreSQL 16 + PHP 8.3
- GitHub Check: PostgreSQL 16 + PHP 8.4
- GitHub Check: PostgreSQL 17 + PHP 8.3
- GitHub Check: PostgreSQL 17 + PHP 8.2
- GitHub Check: PostgreSQL 16 + PHP 8.2
- GitHub Check: PostgreSQL 16 + PHP 8.1
- GitHub Check: PHP 8.1 + Doctrine ORM 2.14 + Doctrine Lexer 1.2
- GitHub Check: PHP 8.3 + Doctrine ORM latest + Doctrine Lexer latest
- GitHub Check: PHP 8.4 + Doctrine ORM 3.0 + Doctrine Lexer 3.0
- GitHub Check: PHP 8.3 + Doctrine ORM 3.0 + Doctrine Lexer 3.0
- GitHub Check: PHP 8.3 + Doctrine ORM latest + Doctrine Lexer 3.0
- GitHub Check: PHP 8.2 + Doctrine ORM 2.14 + Doctrine Lexer latest
- GitHub Check: PHP 8.2 + Doctrine ORM latest + Doctrine Lexer latest
- GitHub Check: PHP 8.2 + Doctrine ORM 2.14 + Doctrine Lexer 2.1
- GitHub Check: PHP 8.2 + Doctrine ORM latest + Doctrine Lexer 3.0
- GitHub Check: PHP 8.1 + Doctrine ORM latest + Doctrine Lexer 3.0
🔇 Additional comments (14)
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/TstzRangeTest.php (7)
1-14
: LGTM! Well-structured test class declaration.The class properly extends
BaseTimestampRangeTestCase
with correct generic type annotation and imports all necessary dependencies.
16-106
: LGTM! Comprehensive implementation of abstract methods.All abstract methods from the base class are correctly implemented:
- Range creation methods return appropriate TstzRange instances
- Expected string formats match the
Y-m-d H:i:s.uP
format used by TstzRange- Test time providers use consistent timezone formatting
108-117
: LGTM! Good test for timezone-aware range creation.The test properly validates hour range creation with timezone preservation and uses
modify('+1 hour')
for clean time manipulation.
119-159
: LGTM! Comprehensive data providers for core functionality.Both data providers cover essential test scenarios:
provideContainsTestCases()
: boundary conditions, null handling, and containment logicprovideFromStringTestCases()
: various range formats and edge cases
161-179
: LGTM! Excellent timezone and microsecond precision testing.These tests validate critical TstzRange features:
- Timezone information preservation across different zones
- Exact microsecond precision handling
181-233
: LGTM! Thorough error handling and parsing validation.The tests properly validate:
- Type safety with appropriate exception expectations
- String formatting with timezone and microseconds
- Round-trip parsing functionality
- Invalid input handling with clear error messages
235-244
: LGTM! Good test for timezone preservation.The test validates that timezone information is maintained when creating ranges with infinite bounds.
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/TsRangeTest.php (4)
16-22
: LGTM on range creation methods.The implementation correctly follows the abstract method contracts and uses appropriate timestamp objects and parameters.
Also applies to: 39-47, 59-62, 64-71
108-128
: Well-structured boundary and comparison test cases.The test data providers cover important edge cases including reverse ranges, equal bounds with different inclusivity, and boundary conditions.
Also applies to: 130-166
179-198
: Comprehensive data providers for core functionality.The data providers effectively test the
contains()
andfromString()
methods with good coverage of edge cases including null values and different range formats.Also applies to: 200-219
284-293
: TSRANGE timezone handling validatedThe
TsRange::formatValue()
method uses$value->format('Y-m-d H:i:s.u')
, which preserves the original wall-clock time and drops the timezone offset—exactly as the test expects. This aligns with PostgreSQL’stsrange
(timestamp without time zone) behavior and the project’s pattern of DQL-to-SQL translation. No changes required.tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseRangeTestCase.php (3)
21-101
: Well-structured test methods with comprehensive coverage!The test methods provide excellent coverage of range functionality including creation, parsing, containment checks, boundary conditions, and comparisons. The use of PHP 8.0+ attributes and data providers follows modern PHPUnit best practices.
179-293
: Excellent helper assertion methods!The assertion helpers provide a comprehensive toolkit for range testing with clear error messages and consistent patterns. The
assertRangeEquals
method's approach of comparing both string representation and isEmpty state is particularly well-thought-out for value object comparison.
294-325
: Thorough edge case handling!The edge case testing methods demonstrate excellent attention to detail. Testing all four bracket combinations for equal bounds and validating reverse bounds behavior ensures robust range implementations. The callable factory approach provides good flexibility.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
♻️ Duplicate comments (1)
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeTestCase.php (1)
75-75
: Add missing SQL declaration test method.Based on the past review comment, there should be a
getExpectedSqlDeclaration()
abstract method that exists but isn't being tested. The SQL declaration functionality should be validated to ensure complete test coverage.Please add a test method to exercise the SQL declaration functionality:
#[Test] public function has_correct_sql_declaration(): void { self::assertEquals( $this->getExpectedSqlDeclaration(), $this->fixture->getSQLDeclaration([], $this->platform) ); }And ensure the abstract method is defined:
abstract protected function getExpectedSqlDeclaration(): string;
🧹 Nitpick comments (1)
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseRangeTestCase.php (1)
326-326
: Add newline at end of file.Add a newline character at the end of the file to follow Unix conventions:
} } +
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (3)
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeTestCase.php
(1 hunks)tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseRangeTestCase.php
(1 hunks)tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/DateRangeTest.php
(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
- tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/DateRangeTest.php
🧰 Additional context used
🧠 Learnings (3)
📓 Common learnings
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#263
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/Numrange.php:19-21
Timestamp: 2025-03-11T12:32:10.726Z
Learning: In the postgresql-for-doctrine repository, PostgreSQL range functions have distinct implementations for different data types. The `Numrange` function works with numeric/decimal values and is tested using the `ContainsDecimals` fixture with properties typed as `float`. In contrast, the `Int4range` function works with 32-bit integers and is tested using the `ContainsIntegers` fixture with properties typed as `int`. While the PHP implementations share a similar structure (extending `BaseFunction`), they are semantically different as they handle different PostgreSQL data types.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#0
File: :0-0
Timestamp: 2025-03-26T02:46:12.804Z
Learning: The PR "preserve the type of floats and integers when transforming back and forth between PostgreSQL and PHP" improves type handling by ensuring that integers remain integers, floats remain floats, numeric strings stay as strings, and booleans are properly converted through the transformation process.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#352
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpInstrTest.php:1-67
Timestamp: 2025-04-20T11:24:18.300Z
Learning: This PostgreSQL-for-Doctrine project is a translation layer only, focusing on correctly converting Doctrine DQL to PostgreSQL SQL syntax. It ensures arguments are passed in the expected format but does not test or handle PostgreSQL's actual function behavior or data handling. Test cases should focus on DQL-to-SQL translation and argument validation, not on PostgreSQL-specific behaviors.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#340
File: tests/MartinGeorgiev/Doctrine/DBAL/Types/InetArrayTest.php:145-145
Timestamp: 2025-04-11T11:23:44.192Z
Learning: In the PostgreSQL for Doctrine test cases, methods that test database-to-PHP conversions should use `mixed` type for parameter and include non-string test cases in their data providers, following the pattern in classes like InetTest, CidrTest, and MacaddrTest.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#357
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpMatchTest.php:28-62
Timestamp: 2025-04-22T00:03:37.733Z
Learning: This project focuses on providing Doctrine ORM interfaces to PostgreSQL functions. Tests should validate correct DQL-to-SQL translation rather than PostgreSQL functionality itself. Test cases should focus on parameter passing and SQL generation, not on testing specific PostgreSQL regex pattern behaviors.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#350
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/BaseVariadicFunction.php:78-88
Timestamp: 2025-04-18T10:33:52.412Z
Learning: In SQL generation code for the postgresql-for-doctrine library, it's better to fail explicitly with clear errors than to use fallback behavior that makes assumptions about node types, as this could lead to functional bugs or security issues.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#0
File: :0-0
Timestamp: 2025-03-11T17:02:51.971Z
Learning: The PostgreSQL-for-doctrine library implements the JSON array element existence check using the `RIGHT_EXISTS_ON_LEFT` DQL function, which maps to PostgreSQL's `?` operator. This is used for checking if a specific value exists in a JSONB array column.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#277
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonValueTest.php:19-35
Timestamp: 2025-03-13T15:00:16.619Z
Learning: The JsonValue implementation in postgres-for-doctrine has documented limitations: it does not support RETURNING type, DEFAULT clause, ON ERROR clause, ON EMPTY clause, and other advanced PostgreSQL JSON_VALUE features due to DQL limitations.
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeTestCase.php (10)
Learnt from: martin-georgiev
PR: #263
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/Numrange.php:19-21
Timestamp: 2025-03-11T12:32:10.726Z
Learning: In the postgresql-for-doctrine repository, PostgreSQL range functions have distinct implementations for different data types. The Numrange
function works with numeric/decimal values and is tested using the ContainsDecimals
fixture with properties typed as float
. In contrast, the Int4range
function works with 32-bit integers and is tested using the ContainsIntegers
fixture with properties typed as int
. While the PHP implementations share a similar structure (extending BaseFunction
), they are semantically different as they handle different PostgreSQL data types.
Learnt from: martin-georgiev
PR: #383
File: tests/Unit/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RadiansTest.php:1-9
Timestamp: 2025-05-23T11:11:57.951Z
Learning: Tests in the Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions
namespace extend a custom TestCase
class from the same namespace (Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase
), rather than PHPUnit's TestCase directly, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: #318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions
namespace extend a custom TestCase
class from the same namespace (Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase
), rather than PHPUnit's TestCase, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: #318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions
namespace extend a custom TestCase
class from the same namespace (Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase
), not PHPUnit's TestCase, and therefore don't need an explicit import statement.
Learnt from: martin-georgiev
PR: #340
File: tests/MartinGeorgiev/Doctrine/DBAL/Types/InetArrayTest.php:145-145
Timestamp: 2025-04-11T11:23:44.192Z
Learning: In the PostgreSQL for Doctrine test cases, methods that test database-to-PHP conversions should use mixed
type for parameter and include non-string test cases in their data providers, following the pattern in classes like InetTest, CidrTest, and MacaddrTest.
Learnt from: martin-georgiev
PR: #357
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpMatchTest.php:28-62
Timestamp: 2025-04-22T00:03:37.733Z
Learning: This project focuses on providing Doctrine ORM interfaces to PostgreSQL functions. Tests should validate correct DQL-to-SQL translation rather than PostgreSQL functionality itself. Test cases should focus on parameter passing and SQL generation, not on testing specific PostgreSQL regex pattern behaviors.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#0
File: :0-0
Timestamp: 2025-04-23T20:20:39.026Z
Learning: In this project, unit tests should avoid using reflection (ReflectionMethod) to test protected methods directly, and instead use fixtures to test through public interfaces, even if it means slightly lower test coverage.
Learnt from: martin-georgiev
PR: #352
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpInstrTest.php:1-67
Timestamp: 2025-04-20T11:24:18.300Z
Learning: This PostgreSQL-for-Doctrine project is a translation layer only, focusing on correctly converting Doctrine DQL to PostgreSQL SQL syntax. It ensures arguments are passed in the expected format but does not test or handle PostgreSQL's actual function behavior or data handling. Test cases should focus on DQL-to-SQL translation and argument validation, not on PostgreSQL-specific behaviors.
Learnt from: martin-georgiev
PR: #309
File: tests/MartinGeorgiev/Doctrine/DBAL/Types/BaseTypeTest.php:0-0
Timestamp: 2025-03-26T23:51:33.709Z
Learning: The requiresSQLCommentHint() method is intentionally kept in tests to support backwards compatibility with older Doctrine DBAL versions, even though it's deprecated in newer versions and triggers static analysis warnings. The method isn't used in production code.
Learnt from: martin-georgiev
PR: #350
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/BaseVariadicFunction.php:78-88
Timestamp: 2025-04-18T10:33:52.412Z
Learning: In SQL generation code for the postgresql-for-doctrine library, it's better to fail explicitly with clear errors than to use fallback behavior that makes assumptions about node types, as this could lead to functional bugs or security issues.
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseRangeTestCase.php (6)
Learnt from: martin-georgiev
PR: #263
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/Numrange.php:19-21
Timestamp: 2025-03-11T12:32:10.726Z
Learning: In the postgresql-for-doctrine repository, PostgreSQL range functions have distinct implementations for different data types. The Numrange
function works with numeric/decimal values and is tested using the ContainsDecimals
fixture with properties typed as float
. In contrast, the Int4range
function works with 32-bit integers and is tested using the ContainsIntegers
fixture with properties typed as int
. While the PHP implementations share a similar structure (extending BaseFunction
), they are semantically different as they handle different PostgreSQL data types.
Learnt from: martin-georgiev
PR: #383
File: tests/Unit/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RadiansTest.php:1-9
Timestamp: 2025-05-23T11:11:57.951Z
Learning: Tests in the Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions
namespace extend a custom TestCase
class from the same namespace (Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase
), rather than PHPUnit's TestCase directly, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: #318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions
namespace extend a custom TestCase
class from the same namespace (Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase
), rather than PHPUnit's TestCase, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: #318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions
namespace extend a custom TestCase
class from the same namespace (Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase
), not PHPUnit's TestCase, and therefore don't need an explicit import statement.
Learnt from: martin-georgiev
PR: #340
File: tests/MartinGeorgiev/Doctrine/DBAL/Types/InetArrayTest.php:145-145
Timestamp: 2025-04-11T11:23:44.192Z
Learning: In the PostgreSQL for Doctrine test cases, methods that test database-to-PHP conversions should use mixed
type for parameter and include non-string test cases in their data providers, following the pattern in classes like InetTest, CidrTest, and MacaddrTest.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#0
File: :0-0
Timestamp: 2025-04-23T20:20:39.026Z
Learning: In this project, unit tests should avoid using reflection (ReflectionMethod) to test protected methods directly, and instead use fixtures to test through public interfaces, even if it means slightly lower test coverage.
🔇 Additional comments (13)
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/BaseRangeTestCase.php (8)
1-21
: LGTM! Well-structured generic test base class.The class declaration, imports, and generic typing are correctly implemented. The template annotation properly constrains the generic type R to Range subtypes.
22-36
: LGTM! Proper test setup with generic typing.The properties are correctly typed and the setUp method follows PHPUnit best practices by mocking dependencies and delegating type creation to concrete subclasses.
38-42
: LGTM! Simple and effective name validation test.The test correctly validates that the type returns its expected name, delegating to concrete subclasses via the abstract method.
44-52
: LGTM! Comprehensive PHP-to-database conversion test.The test correctly validates the conversion from PHP Range objects to PostgreSQL strings using a data provider pattern with proper generic typing.
54-70
: LGTM! Thorough database-to-PHP conversion test.The test comprehensively validates conversion from PostgreSQL strings to PHP objects, properly handling null cases and validating both string representation and empty status.
77-101
: LGTM! Comprehensive null and empty range handling.These tests thoroughly cover important edge cases including bidirectional null conversion and PostgreSQL's special 'empty' range representation.
103-136
: LGTM! Comprehensive exception handling tests.The tests thoroughly validate error conditions with appropriate exception types. The PHPStan ignore comments are correctly used for intentionally invalid test inputs.
138-152
: LGTM! Well-defined abstract contract.The abstract methods provide a clean contract for concrete subclasses with proper generic typing and clear documentation.
tests/Unit/MartinGeorgiev/Doctrine/DBAL/Types/ValueObject/BaseRangeTestCase.php (5)
1-19
: LGTM! Well-structured abstract test base class.The file structure, imports, and generic template declaration are appropriate for an abstract test base class that will be extended by concrete range type tests.
21-111
: Well-designed test methods with comprehensive coverage.The test methods provide excellent coverage of range functionality including creation, parsing, containment checks, and boundary conditions. The use of data providers and abstract methods allows concrete implementations to provide type-specific test cases.
72-177
: Comprehensive set of abstract methods for extensibility.The abstract methods provide a complete contract for concrete range test implementations, ensuring consistent testing patterns across all range types while allowing type-specific customization.
179-270
: Excellent assertion helper methods with clear error messages.The assertion methods provide a rich set of utilities for validating range behavior with descriptive error messages that will help diagnose test failures. The use of var_export for value representation in error messages is particularly helpful.
272-324
: Thoughtful edge case handling in utility methods.The utility methods effectively handle important edge cases like equal bounds with different bracket combinations and reversed bounds. The
generateBoundaryTestCases
method provides a reusable way to generate comprehensive boundary tests.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
tests/Integration/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RangeOperatorsTest.php
(1 hunks)
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#263
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/Numrange.php:19-21
Timestamp: 2025-03-11T12:32:10.726Z
Learning: In the postgresql-for-doctrine repository, PostgreSQL range functions have distinct implementations for different data types. The `Numrange` function works with numeric/decimal values and is tested using the `ContainsDecimals` fixture with properties typed as `float`. In contrast, the `Int4range` function works with 32-bit integers and is tested using the `ContainsIntegers` fixture with properties typed as `int`. While the PHP implementations share a similar structure (extending `BaseFunction`), they are semantically different as they handle different PostgreSQL data types.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#0
File: :0-0
Timestamp: 2025-03-26T02:46:12.804Z
Learning: The PR "preserve the type of floats and integers when transforming back and forth between PostgreSQL and PHP" improves type handling by ensuring that integers remain integers, floats remain floats, numeric strings stay as strings, and booleans are properly converted through the transformation process.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#352
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpInstrTest.php:1-67
Timestamp: 2025-04-20T11:24:18.300Z
Learning: This PostgreSQL-for-Doctrine project is a translation layer only, focusing on correctly converting Doctrine DQL to PostgreSQL SQL syntax. It ensures arguments are passed in the expected format but does not test or handle PostgreSQL's actual function behavior or data handling. Test cases should focus on DQL-to-SQL translation and argument validation, not on PostgreSQL-specific behaviors.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#340
File: tests/MartinGeorgiev/Doctrine/DBAL/Types/InetArrayTest.php:145-145
Timestamp: 2025-04-11T11:23:44.192Z
Learning: In the PostgreSQL for Doctrine test cases, methods that test database-to-PHP conversions should use `mixed` type for parameter and include non-string test cases in their data providers, following the pattern in classes like InetTest, CidrTest, and MacaddrTest.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#357
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpMatchTest.php:28-62
Timestamp: 2025-04-22T00:03:37.733Z
Learning: This project focuses on providing Doctrine ORM interfaces to PostgreSQL functions. Tests should validate correct DQL-to-SQL translation rather than PostgreSQL functionality itself. Test cases should focus on parameter passing and SQL generation, not on testing specific PostgreSQL regex pattern behaviors.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#350
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/BaseVariadicFunction.php:78-88
Timestamp: 2025-04-18T10:33:52.412Z
Learning: In SQL generation code for the postgresql-for-doctrine library, it's better to fail explicitly with clear errors than to use fallback behavior that makes assumptions about node types, as this could lead to functional bugs or security issues.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#0
File: :0-0
Timestamp: 2025-03-11T17:02:51.971Z
Learning: The PostgreSQL-for-doctrine library implements the JSON array element existence check using the `RIGHT_EXISTS_ON_LEFT` DQL function, which maps to PostgreSQL's `?` operator. This is used for checking if a specific value exists in a JSONB array column.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#277
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonValueTest.php:19-35
Timestamp: 2025-03-13T15:00:16.619Z
Learning: The JsonValue implementation in postgres-for-doctrine has documented limitations: it does not support RETURNING type, DEFAULT clause, ON ERROR clause, ON EMPTY clause, and other advanced PostgreSQL JSON_VALUE features due to DQL limitations.
tests/Integration/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RangeOperatorsTest.php (11)
Learnt from: martin-georgiev
PR: #263
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/Numrange.php:19-21
Timestamp: 2025-03-11T12:32:10.726Z
Learning: In the postgresql-for-doctrine repository, PostgreSQL range functions have distinct implementations for different data types. The Numrange
function works with numeric/decimal values and is tested using the ContainsDecimals
fixture with properties typed as float
. In contrast, the Int4range
function works with 32-bit integers and is tested using the ContainsIntegers
fixture with properties typed as int
. While the PHP implementations share a similar structure (extending BaseFunction
), they are semantically different as they handle different PostgreSQL data types.
Learnt from: martin-georgiev
PR: #318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions
namespace extend a custom TestCase
class from the same namespace (Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase
), rather than PHPUnit's TestCase, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: #383
File: tests/Unit/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RadiansTest.php:1-9
Timestamp: 2025-05-23T11:11:57.951Z
Learning: Tests in the Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions
namespace extend a custom TestCase
class from the same namespace (Tests\Unit\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase
), rather than PHPUnit's TestCase directly, and therefore don't need an explicit import.
Learnt from: martin-georgiev
PR: #318
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/XmlAggTest.php:1-9
Timestamp: 2025-03-29T03:31:17.114Z
Learning: Tests in the Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions
namespace extend a custom TestCase
class from the same namespace (Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TestCase
), not PHPUnit's TestCase, and therefore don't need an explicit import statement.
Learnt from: martin-georgiev
PR: #357
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpMatchTest.php:28-62
Timestamp: 2025-04-22T00:03:37.733Z
Learning: This project focuses on providing Doctrine ORM interfaces to PostgreSQL functions. Tests should validate correct DQL-to-SQL translation rather than PostgreSQL functionality itself. Test cases should focus on parameter passing and SQL generation, not on testing specific PostgreSQL regex pattern behaviors.
Learnt from: martin-georgiev
PR: #340
File: tests/MartinGeorgiev/Doctrine/DBAL/Types/InetArrayTest.php:145-145
Timestamp: 2025-04-11T11:23:44.192Z
Learning: In the PostgreSQL for Doctrine test cases, methods that test database-to-PHP conversions should use mixed
type for parameter and include non-string test cases in their data providers, following the pattern in classes like InetTest, CidrTest, and MacaddrTest.
Learnt from: martin-georgiev
PR: #352
File: tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RegexpInstrTest.php:1-67
Timestamp: 2025-04-20T11:24:18.300Z
Learning: This PostgreSQL-for-Doctrine project is a translation layer only, focusing on correctly converting Doctrine DQL to PostgreSQL SQL syntax. It ensures arguments are passed in the expected format but does not test or handle PostgreSQL's actual function behavior or data handling. Test cases should focus on DQL-to-SQL translation and argument validation, not on PostgreSQL-specific behaviors.
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#0
File: :0-0
Timestamp: 2025-03-11T17:02:51.971Z
Learning: When using operator-like functions in PostgreSQL-for-doctrine, they must be used as boolean functions with = TRUE
rather than as direct operators (e.g., RIGHT_EXISTS_ON_LEFT(column, value) = TRUE
instead of column RIGHT_EXISTS_ON_LEFT value
).
Learnt from: martin-georgiev
PR: martin-georgiev/postgresql-for-doctrine#0
File: :0-0
Timestamp: 2025-03-11T17:02:51.971Z
Learning: The PostgreSQL-for-doctrine library implements the JSON array element existence check using the RIGHT_EXISTS_ON_LEFT
DQL function, which maps to PostgreSQL's ?
operator. This is used for checking if a specific value exists in a JSONB array column.
Learnt from: martin-georgiev
PR: #350
File: src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/BaseVariadicFunction.php:78-88
Timestamp: 2025-04-18T10:33:52.412Z
Learning: In SQL generation code for the postgresql-for-doctrine library, it's better to fail explicitly with clear errors than to use fallback behavior that makes assumptions about node types, as this could lead to functional bugs or security issues.
Learnt from: karpilin
PR: #386
File: tests/Integration/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ToTimestampTest.php:34-39
Timestamp: 2025-05-27T16:10:35.054Z
Learning: When reviewing PostgreSQL formatting function tests, the error handling behavior should match PostgreSQL's actual implementation rather than assuming consistency across all formatting functions, as different functions may handle invalid inputs differently.
🧬 Code Graph Analysis (1)
tests/Integration/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RangeOperatorsTest.php (1)
tests/Integration/MartinGeorgiev/TestCase.php (2)
createTestSchema
(155-160)dropTestTableIfItExists
(216-223)
🔇 Additional comments (4)
tests/Integration/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RangeOperatorsTest.php (4)
1-10
: LGTM! Proper namespace and class structure.The file follows the expected namespace convention and extends the appropriate custom TestCase class for integration tests.
11-16
: Good test setup pattern.The setUp method properly calls parent::setUp() and initializes the test environment with table creation and data insertion.
18-42
: Comprehensive test table structure covering all range types.The table creation includes all PostgreSQL range types (int4range, int8range, numrange, daterange, tsrange, tstzrange) and corresponding array types, providing good coverage for the new range type support.
44-63
: Well-structured test data with diverse scenarios.The test data provides good coverage with three rows containing different range values, including overlapping and non-overlapping ranges, which enables comprehensive testing of range operations.
$result = $this->connection->executeQuery($sql)->fetchAllAssociative(); | ||
|
||
$this->assertCount(1, $result); // Should match only the first record | ||
$this->assertContains(['id' => 1], $result); | ||
} | ||
|
||
public function test_range_equals_operator(): void | ||
{ | ||
// Test if ranges are equal | ||
$sql = "SELECT id FROM test.rangeoperators WHERE int4range_field = '[1,10)'::int4range"; | ||
$result = $this->connection->executeQuery($sql)->fetchAllAssociative(); | ||
|
||
$this->assertCount(1, $result); // Should match only the first record | ||
$this->assertContains(['id' => 1], $result); | ||
} | ||
|
||
public function test_range_not_equals_operator(): void | ||
{ | ||
// Test if ranges are not equal | ||
$sql = "SELECT id FROM test.rangeoperators WHERE int4range_field != '[1,10)'::int4range"; | ||
$result = $this->connection->executeQuery($sql)->fetchAllAssociative(); | ||
|
||
$this->assertCount(2, $result); // Should match records 2 and 3 | ||
$this->assertContains(['id' => 2], $result); | ||
$this->assertContains(['id' => 3], $result); | ||
} | ||
|
||
public function test_range_contains_element(): void | ||
{ | ||
// Test if range contains a specific element | ||
$sql = 'SELECT id FROM test.rangeoperators WHERE int4range_field @> 5'; | ||
$result = $this->connection->executeQuery($sql)->fetchAllAssociative(); | ||
|
||
$this->assertCount(2, $result); // Should match records with ranges [1,10) and [5,15) | ||
$this->assertContains(['id' => 1], $result); | ||
$this->assertContains(['id' => 2], $result); | ||
} | ||
|
||
public function test_element_is_contained_by_range(): void | ||
{ | ||
// Test if an element is contained by a range | ||
$sql = 'SELECT id FROM test.rangeoperators WHERE 5 <@ int4range_field'; | ||
$result = $this->connection->executeQuery($sql)->fetchAllAssociative(); | ||
|
||
$this->assertCount(2, $result); // Should match records with ranges [1,10) and [5,15) | ||
$this->assertContains(['id' => 1], $result); | ||
$this->assertContains(['id' => 2], $result); | ||
} | ||
|
||
public function test_range_operations_with_tstzrange(): void | ||
{ | ||
// Test timestamp with timezone range operations | ||
$sql = "SELECT id FROM test.rangeoperators WHERE tstzrange_field @> '2023-01-01 14:00:00+00'::timestamptz"; | ||
$result = $this->connection->executeQuery($sql)->fetchAllAssociative(); | ||
|
||
$this->assertCount(1, $result); // Should match only the first record | ||
$this->assertContains(['id' => 1], $result); | ||
} | ||
|
||
public function test_empty_range_operations(): void | ||
{ | ||
// Test operations with empty ranges | ||
$sql = "SELECT id FROM test.rangeoperators WHERE 'empty'::int4range @> int4range_field"; | ||
$result = $this->connection->executeQuery($sql)->fetchAllAssociative(); | ||
|
||
$this->assertCount(0, $result); // Empty range should not contain any non-empty ranges | ||
} | ||
|
||
public function test_infinite_range_operations(): void | ||
{ | ||
// Test operations with infinite ranges | ||
$sql = "SELECT id FROM test.rangeoperators WHERE '(,)'::int4range @> int4range_field"; | ||
$result = $this->connection->executeQuery($sql)->fetchAllAssociative(); | ||
|
||
$this->assertCount(3, $result); // Infinite range should contain all finite ranges | ||
} | ||
|
||
public function test_range_boundary_conditions(): void | ||
{ | ||
// Test boundary conditions with inclusive/exclusive bounds | ||
$sql = 'SELECT id FROM test.rangeoperators WHERE int4range_field @> 1 AND int4range_field @> 9'; | ||
$result = $this->connection->executeQuery($sql)->fetchAllAssociative(); | ||
|
||
$this->assertCount(1, $result); // Should match only the first record [1,10) which contains both 1 and 9 | ||
$this->assertContains(['id' => 1], $result); | ||
} | ||
|
||
public function test_complex_range_queries(): void | ||
{ | ||
// Test complex queries combining multiple range operations | ||
$sql = 'SELECT id FROM test.rangeoperators | ||
WHERE int4range_field @> \'[3,7)\'::int4range | ||
AND numrange_field @> \'[2.5,8.5)\'::numrange | ||
AND daterange_field @> \'[2023-06-15,2023-06-30)\'::daterange'; | ||
$result = $this->connection->executeQuery($sql)->fetchAllAssociative(); | ||
|
||
$this->assertCount(1, $result); // Should match only record 1 (all conditions met) | ||
$this->assertContains(['id' => 1], $result); | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
Consider alignment with project's translation layer focus.
While these tests are comprehensive, they appear to test raw PostgreSQL functionality rather than Doctrine DQL-to-SQL translation. Based on the project learnings, this PostgreSQL-for-Doctrine project focuses on "correctly converting Doctrine DQL to PostgreSQL SQL syntax" and tests should "focus on DQL-to-SQL translation and argument validation, not on testing specific PostgreSQL behaviors."
These integration tests use raw SQL queries to validate PostgreSQL operators directly, which may not align with the project's primary purpose as a translation layer.
Let me verify if there are corresponding DQL functions for these range operators that should be tested instead:
🏁 Script executed:
#!/bin/bash
# Description: Search for range operator DQL functions in the codebase
# Expected: Find DQL function implementations for range operators like Contains, Overlaps, etc.
echo "Searching for range operator DQL functions..."
fd -e php -x rg -l "range.*operator|Contains.*range|Overlaps.*range" {} \; | head -20
echo -e "\nSearching for function classes that might handle range operations..."
fd -t f -e php . src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ | rg -i "range|contain|overlap" | head -10
echo -e "\nSearching for any range-related function implementations..."
rg -A 5 -B 5 "class.*Range.*Function|class.*Contains|class.*Overlap" src/
Length of output: 5063
Align integration tests with DQL-to-SQL translation focus
The tests in tests/Integration/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RangeOperatorsTest.php (lines 65–261) exercise raw SQL against PostgreSQL rather than verifying Doctrine’s DQL-to-SQL conversion. Since this library implements only a translation layer, please replace or augment these with tests that:
- Use DQL (or QueryBuilder) to invoke the AST function classes: Contains, IsContainedBy, Overlaps, DateOverlaps, etc.
- Assert on the generated SQL string, confirming the correct operator prototypes (
%s @> %s
,%s <@ %s
,%s && %s
, etc.) and parameter mappings. - Avoid testing PostgreSQL behavior (result sets), and focus solely on SQL generation and argument placement.
Example replacement snippet:
$dql = 'SELECT e FROM TestRangeEntity e WHERE CONTAINS(e.int4rangeField, :range) = TRUE';
$query = $this->em->createQuery($dql)
->setParameter('range', '[3,7)' . '::int4range');
$this->assertStringContainsString(
'(e.int4rangeField @> :range)',
$query->getSQL()
);
🤖 Prompt for AI Agents
In
tests/Integration/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RangeOperatorsTest.php
from lines 65 to 261, the current tests execute raw SQL queries against
PostgreSQL and verify result sets, which is outside the scope of this library
focused on DQL-to-SQL translation. Replace or augment these tests to use
Doctrine DQL or QueryBuilder to invoke the AST function classes like Contains,
IsContainedBy, Overlaps, and DateOverlaps. Then assert on the generated SQL
strings to confirm correct operator usage and parameter placement, avoiding any
direct database execution or result verification. This ensures tests validate
SQL generation correctness rather than PostgreSQL behavior.
public function test_range_value_is_contained_by_array(): void | ||
{ | ||
// Test if a value is contained by an array using ANY() function | ||
$sql = 'SELECT id FROM test.rangeoperators WHERE 3 = ANY(integer_array_field)'; | ||
$result = $this->connection->executeQuery($sql)->fetchAllAssociative(); | ||
|
||
$this->assertCount(1, $result); // Should match only the first record | ||
$this->assertContains(['id' => 1], $result); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Duplicate test logic detected.
The test_range_value_is_contained_by_array()
method (lines 158-166) appears to be identical to test_array_contains_range_value()
(lines 128-136). Both test the same SQL query and expect the same results.
Apply this diff to fix the duplicate test or provide a distinct test case:
public function test_range_value_is_contained_by_array(): void
{
- // Test if a value is contained by an array using ANY() function
- $sql = 'SELECT id FROM test.rangeoperators WHERE 3 = ANY(integer_array_field)';
+ // Test if a value is contained by an array using different value
+ $sql = 'SELECT id FROM test.rangeoperators WHERE 5 = ANY(integer_array_field)';
$result = $this->connection->executeQuery($sql)->fetchAllAssociative();
- $this->assertCount(1, $result); // Should match only the first record
- $this->assertContains(['id' => 1], $result);
+ $this->assertCount(1, $result); // Should match only the second record
+ $this->assertContains(['id' => 2], $result);
}
🤖 Prompt for AI Agents
In
tests/Integration/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/RangeOperatorsTest.php
around lines 158 to 166, the test_range_value_is_contained_by_array method
duplicates the logic of test_array_contains_range_value on lines 128 to 136 by
running the same SQL query and asserting the same results. To fix this, either
remove the duplicate test_range_value_is_contained_by_array method or modify it
to test a different scenario or SQL query that is not covered by
test_array_contains_range_value, ensuring each test case is unique and
meaningful.
Summary by CodeRabbit
New Features
daterange
,int4range
,int8range
,numrange
,tsrange
,tstzrange
) in Doctrine DBAL with dedicated PHP value objects.Tests
Documentation